
# generated by tools/generate.py
# https://github.com/esoma/pyglm-typing/

import ctypes
from typing import (Any, Callable, Generator, Generic, Iterable, List, Literal,
                    Optional, SupportsInt, Tuple, Type, TypeVar, Union,
                    overload)

from . import glm_typing

_T = TypeVar('_T')
_VT = TypeVar('_VT', bvec1, bvec2, bvec3, bvec4, dmvec2, dmvec3, dmvec4, dvec1, dvec2, dvec3, dvec4, i16vec1, i16vec2, i16vec3, i16vec4, i64vec1, i64vec2, i64vec3, i64vec4, i8vec1, i8vec2, i8vec3, i8vec4, imvec2, imvec3, imvec4, ivec1, ivec2, ivec3, ivec4, mvec2, mvec3, mvec4, u16vec1, u16vec2, u16vec3, u16vec4, u64vec1, u64vec2, u64vec3, u64vec4, u8vec1, u8vec2, u8vec3, u8vec4, umvec2, umvec3, umvec4, uvec1, uvec2, uvec3, uvec4, vec1, vec2, vec3, vec4)
_NF32VT = TypeVar('_NF32VT', bvec1, bvec2, bvec3, bvec4, dmvec2, dmvec3, dmvec4, dvec1, dvec2, dvec3, dvec4, i16vec1, i16vec2, i16vec3, i16vec4, i64vec1, i64vec2, i64vec3, i64vec4, i8vec1, i8vec2, i8vec3, i8vec4, imvec2, imvec3, imvec4, ivec1, ivec2, ivec3, ivec4, u16vec1, u16vec2, u16vec3, u16vec4, u64vec1, u64vec2, u64vec3, u64vec4, u8vec1, u8vec2, u8vec3, u8vec4, umvec2, umvec3, umvec4, uvec1, uvec2, uvec3, uvec4)
_FDVT = TypeVar('_FDVT', dmvec2, dmvec3, dmvec4, dvec1, dvec2, dvec3, dvec4, mvec2, mvec3, mvec4, vec1, vec2, vec3, vec4)
_NF32DFVT = TypeVar('_NF32DFVT', dmvec2, dmvec3, dmvec4, dvec1, dvec2, dvec3, dvec4)
_NF32DFV1T = TypeVar('_NF32DFV1T', bound=dvec1)
_NF32DFV2T = TypeVar('_NF32DFV2T', dmvec2, dvec2)
_NF32DFV3T = TypeVar('_NF32DFV3T', dmvec3, dvec3)
_NF32DFV4T = TypeVar('_NF32DFV4T', dmvec4, dvec4)
_NF32V1T = TypeVar('_NF32V1T', bvec1, dvec1, i16vec1, i64vec1, i8vec1, ivec1, u16vec1, u64vec1, u8vec1, uvec1)
_NF32V2T = TypeVar('_NF32V2T', bvec2, dmvec2, dvec2, i16vec2, i64vec2, i8vec2, imvec2, ivec2, u16vec2, u64vec2, u8vec2, umvec2, uvec2)
_NF32V3T = TypeVar('_NF32V3T', bvec3, dmvec3, dvec3, i16vec3, i64vec3, i8vec3, imvec3, ivec3, u16vec3, u64vec3, u8vec3, umvec3, uvec3)
_NF32V4T = TypeVar('_NF32V4T', bvec4, dmvec4, dvec4, i16vec4, i64vec4, i8vec4, imvec4, ivec4, u16vec4, u64vec4, u8vec4, umvec4, uvec4)
_IVT = TypeVar('_IVT', i16vec1, i16vec2, i16vec3, i16vec4, i64vec1, i64vec2, i64vec3, i64vec4, i8vec1, i8vec2, i8vec3, i8vec4, imvec2, imvec3, imvec4, ivec1, ivec2, ivec3, ivec4)
_UVT = TypeVar('_UVT', u16vec1, u16vec2, u16vec3, u16vec4, u64vec1, u64vec2, u64vec3, u64vec4, u8vec1, u8vec2, u8vec3, u8vec4, umvec2, umvec3, umvec4, uvec1, uvec2, uvec3, uvec4)
_NI32IVT = TypeVar('_NI32IVT', i16vec1, i16vec2, i16vec3, i16vec4, i64vec1, i64vec2, i64vec3, i64vec4, i8vec1, i8vec2, i8vec3, i8vec4)
_NI32IUVT = TypeVar('_NI32IUVT', i16vec1, i16vec2, i16vec3, i16vec4, i64vec1, i64vec2, i64vec3, i64vec4, i8vec1, i8vec2, i8vec3, i8vec4, u16vec1, u16vec2, u16vec3, u16vec4, u64vec1, u64vec2, u64vec3, u64vec4, u8vec1, u8vec2, u8vec3, u8vec4, umvec2, umvec3, umvec4, uvec1, uvec2, uvec3, uvec4)
_NI32IUV1T = TypeVar('_NI32IUV1T', i16vec1, i64vec1, i8vec1, u16vec1, u64vec1, u8vec1, uvec1)
_NI32IUV2T = TypeVar('_NI32IUV2T', i16vec2, i64vec2, i8vec2, u16vec2, u64vec2, u8vec2, umvec2, uvec2)
_NI32IUV3T = TypeVar('_NI32IUV3T', i16vec3, i64vec3, i8vec3, u16vec3, u64vec3, u8vec3, umvec3, uvec3)
_NI32IUV4T = TypeVar('_NI32IUV4T', i16vec4, i64vec4, i8vec4, u16vec4, u64vec4, u8vec4, umvec4, uvec4)
_MT = TypeVar('_MT', dmat2x2, dmat2x3, dmat2x4, dmat3x2, dmat3x3, dmat3x4, dmat4x2, dmat4x3, dmat4x4, imat2x2, imat2x3, imat2x4, imat3x2, imat3x3, imat3x4, imat4x2, imat4x3, imat4x4, mat2x2, mat2x3, mat2x4, mat3x2, mat3x3, mat3x4, mat4x2, mat4x3, mat4x4, umat2x2, umat2x3, umat2x4, umat3x2, umat3x3, umat3x4, umat4x2, umat4x3, umat4x4)
_NF32FDMSQRT = TypeVar('_NF32FDMSQRT', dmat2x2, dmat3x3, dmat4x4)
_NF32M2XNT = TypeVar('_NF32M2XNT', dmat2x2, dmat2x3, dmat2x4, imat2x2, imat2x3, imat2x4, umat2x2, umat2x3, umat2x4)
_NF32M3XNT = TypeVar('_NF32M3XNT', dmat3x2, dmat3x3, dmat3x4, imat3x2, imat3x3, imat3x4, umat3x2, umat3x3, umat3x4)
_NF32M4XNT = TypeVar('_NF32M4XNT', dmat4x2, dmat4x3, dmat4x4, imat4x2, imat4x3, imat4x4, umat4x2, umat4x3, umat4x4)
_NF32M2X2T = TypeVar('_NF32M2X2T', dmat2x2, imat2x2, umat2x2)
_NF32M2X3T = TypeVar('_NF32M2X3T', dmat2x3, imat2x3, umat2x3)
_NF32M2X4T = TypeVar('_NF32M2X4T', dmat2x4, imat2x4, umat2x4)
_NF32M3X2T = TypeVar('_NF32M3X2T', dmat3x2, imat3x2, umat3x2)
_NF32M3X3T = TypeVar('_NF32M3X3T', dmat3x3, imat3x3, umat3x3)
_NF32M3X4T = TypeVar('_NF32M3X4T', dmat3x4, imat3x4, umat3x4)
_NF32M4X2T = TypeVar('_NF32M4X2T', dmat4x2, imat4x2, umat4x2)
_NF32M4X3T = TypeVar('_NF32M4X3T', dmat4x3, imat4x3, umat4x3)
_NF32M4X4T = TypeVar('_NF32M4X4T', dmat4x4, imat4x4, umat4x4)
_QT = TypeVar('_QT', dquat, quat)
_NF32QT = TypeVar('_NF32QT', bound=dquat)

bool_ = ctypes.c_bool
c_int16 = ctypes.c_short
int16 = ctypes.c_short
c_int32 = ctypes.c_long
int32 = ctypes.c_long
c_int64 = ctypes.c_longlong
int64 = ctypes.c_longlong
c_int8 = ctypes.c_byte
int8 = ctypes.c_byte
c_uint16 = ctypes.c_ushort
uint16 = ctypes.c_ushort
c_uint32 = ctypes.c_ulong
uint32 = ctypes.c_ulong
c_uint64 = ctypes.c_ulonglong
uint64 = ctypes.c_ulonglong
c_uint8 = ctypes.c_ubyte
uint8 = ctypes.c_ubyte
double = ctypes.c_double
float64 = ctypes.c_double
float32 = ctypes.c_float
float_ = ctypes.c_float


class bvec1:
    x: bool



    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector1, glm_typing.BAnyVector2, glm_typing.BAnyVector3, glm_typing.BAnyVector4]) -> None: ...

    def __len__(self) -> Literal[1]: ...
    def __getitem__(self, index: int) -> bool: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[bool, None, None]: ...

    def __neg__(self) -> bvec1: ...
    def __pos__(self) -> bvec1: ...
    def __abs__(self) -> bvec1: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[bool]: ...
    def to_tuple(self) -> Tuple[bool]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> bvec1: ...

    def __add__(self, other: Union[glm_typing.B8Vector1, glm_typing.Number]) -> bvec1: ...
    def __radd__(self, other: Union[glm_typing.B8Vector1, glm_typing.Number]) -> bvec1: ...
    def __iadd__(self, other: Union[glm_typing.B8Vector1, glm_typing.Number]) -> bvec1: ...

    def __sub__(self, other: Union[glm_typing.B8Vector1, glm_typing.Number]) -> bvec1: ...
    def __rsub__(self, other: Union[glm_typing.B8Vector1, glm_typing.Number]) -> bvec1: ...
    def __isub__(self, other: Union[glm_typing.B8Vector1, glm_typing.Number]) -> bvec1: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> bvec1: ...
    @overload
    def __mul__(self, other: glm_typing.B8Vector1) -> bvec1: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> bvec1: ...
    @overload
    def __rmul__(self, other: glm_typing.B8Vector1) -> bvec1: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> bvec1: ...
    @overload
    def __imul__(self, other: glm_typing.B8Vector1) -> bvec1: ...

    def __mod__(self, other: Union[glm_typing.B8Vector1, glm_typing.Number]) -> bvec1: ...
    def __rmod__(self, other: Union[glm_typing.B8Vector1, glm_typing.Number]) -> bvec1: ...
    def __imod__(self, other: Union[glm_typing.B8Vector1, glm_typing.Number]) -> bvec1: ...

    def __pow__(self, other: Union[glm_typing.B8Vector1, glm_typing.Number]) -> bvec1: ...
    def __rpow__(self, other: Union[glm_typing.B8Vector1, glm_typing.Number]) -> bvec1: ...
    def __ipow__(self, other: Union[glm_typing.B8Vector1, glm_typing.Number]) -> bvec1: ...

    def __truediv__(self, other: Union[glm_typing.B8Vector1, glm_typing.Number]) -> bvec1: ...
    def __rtruediv__(self, other: Union[glm_typing.B8Vector1, glm_typing.Number]) -> bvec1: ...
    def __itruediv__(self, other: Union[glm_typing.B8Vector1, glm_typing.Number]) -> bvec1: ...

    def __floordiv__(self, other: Union[glm_typing.B8Vector1, glm_typing.Number]) -> bvec1: ...
    def __rfloordiv__(self, other: Union[glm_typing.B8Vector1, glm_typing.Number]) -> bvec1: ...
    def __ifloordiv__(self, other: Union[glm_typing.B8Vector1, glm_typing.Number]) -> bvec1: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> bvec1: ...
    @overload
    def __matmul__(self, other: glm_typing.B8Vector1) -> bvec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> bvec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.B8Vector1) -> bvec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> bvec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.B8Vector1) -> bvec1: ...

    def __divmod__(self, other: bvec1) -> Tuple[bvec1, bvec1]: ...



class bvec2:
    x: bool
    y: bool


    @property
    def xy(self) -> b8vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.B8Vector2) -> None: ...

    @property
    def yx(self) -> b8vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.B8Vector2) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector2, glm_typing.BAnyVector3, glm_typing.BAnyVector4]) -> None: ...

    def __len__(self) -> Literal[2]: ...
    def __getitem__(self, index: int) -> bool: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[bool, None, None]: ...

    def __neg__(self) -> bvec2: ...
    def __pos__(self) -> bvec2: ...
    def __abs__(self) -> bvec2: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[bool]: ...
    def to_tuple(self) -> Tuple[bool, bool]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> bvec2: ...

    def __add__(self, other: Union[glm_typing.B8Vector2, glm_typing.Number]) -> bvec2: ...
    def __radd__(self, other: Union[glm_typing.B8Vector2, glm_typing.Number]) -> bvec2: ...
    def __iadd__(self, other: Union[glm_typing.B8Vector2, glm_typing.Number]) -> bvec2: ...

    def __sub__(self, other: Union[glm_typing.B8Vector2, glm_typing.Number]) -> bvec2: ...
    def __rsub__(self, other: Union[glm_typing.B8Vector2, glm_typing.Number]) -> bvec2: ...
    def __isub__(self, other: Union[glm_typing.B8Vector2, glm_typing.Number]) -> bvec2: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> bvec2: ...
    @overload
    def __mul__(self, other: glm_typing.B8Vector2) -> bvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> bvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.B8Vector2) -> bvec2: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> bvec2: ...
    @overload
    def __imul__(self, other: glm_typing.B8Vector2) -> bvec2: ...

    def __mod__(self, other: Union[glm_typing.B8Vector2, glm_typing.Number]) -> bvec2: ...
    def __rmod__(self, other: Union[glm_typing.B8Vector2, glm_typing.Number]) -> bvec2: ...
    def __imod__(self, other: Union[glm_typing.B8Vector2, glm_typing.Number]) -> bvec2: ...

    def __pow__(self, other: Union[glm_typing.B8Vector2, glm_typing.Number]) -> bvec2: ...
    def __rpow__(self, other: Union[glm_typing.B8Vector2, glm_typing.Number]) -> bvec2: ...
    def __ipow__(self, other: Union[glm_typing.B8Vector2, glm_typing.Number]) -> bvec2: ...

    def __truediv__(self, other: Union[glm_typing.B8Vector2, glm_typing.Number]) -> bvec2: ...
    def __rtruediv__(self, other: Union[glm_typing.B8Vector2, glm_typing.Number]) -> bvec2: ...
    def __itruediv__(self, other: Union[glm_typing.B8Vector2, glm_typing.Number]) -> bvec2: ...

    def __floordiv__(self, other: Union[glm_typing.B8Vector2, glm_typing.Number]) -> bvec2: ...
    def __rfloordiv__(self, other: Union[glm_typing.B8Vector2, glm_typing.Number]) -> bvec2: ...
    def __ifloordiv__(self, other: Union[glm_typing.B8Vector2, glm_typing.Number]) -> bvec2: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> bvec2: ...
    @overload
    def __matmul__(self, other: glm_typing.B8Vector2) -> bvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> bvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.B8Vector2) -> bvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> bvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.B8Vector2) -> bvec2: ...

    def __divmod__(self, other: bvec2) -> Tuple[bvec2, bvec2]: ...



class bvec3:
    x: bool
    y: bool
    z: bool


    @property
    def xy(self) -> b8vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.B8Vector2) -> None: ...

    @property
    def yx(self) -> b8vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.B8Vector2) -> None: ...

    @property
    def xz(self) -> b8vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.B8Vector2) -> None: ...

    @property
    def zx(self) -> b8vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.B8Vector2) -> None: ...

    @property
    def yz(self) -> b8vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.B8Vector2) -> None: ...

    @property
    def zy(self) -> b8vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.B8Vector2) -> None: ...

    @property
    def xyz(self) -> b8vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def xzy(self) -> b8vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def yxz(self) -> b8vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def yzx(self) -> b8vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def zxy(self) -> b8vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def zyx(self) -> b8vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.B8Vector3) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector3, glm_typing.BAnyVector4]) -> None: ...

    def __len__(self) -> Literal[3]: ...
    def __getitem__(self, index: int) -> bool: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[bool, None, None]: ...

    def __neg__(self) -> bvec3: ...
    def __pos__(self) -> bvec3: ...
    def __abs__(self) -> bvec3: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[bool]: ...
    def to_tuple(self) -> Tuple[bool, bool, bool]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> bvec3: ...

    def __add__(self, other: Union[glm_typing.B8Vector3, glm_typing.Number]) -> bvec3: ...
    def __radd__(self, other: Union[glm_typing.B8Vector3, glm_typing.Number]) -> bvec3: ...
    def __iadd__(self, other: Union[glm_typing.B8Vector3, glm_typing.Number]) -> bvec3: ...

    def __sub__(self, other: Union[glm_typing.B8Vector3, glm_typing.Number]) -> bvec3: ...
    def __rsub__(self, other: Union[glm_typing.B8Vector3, glm_typing.Number]) -> bvec3: ...
    def __isub__(self, other: Union[glm_typing.B8Vector3, glm_typing.Number]) -> bvec3: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> bvec3: ...
    @overload
    def __mul__(self, other: glm_typing.B8Vector3) -> bvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> bvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.B8Vector3) -> bvec3: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> bvec3: ...
    @overload
    def __imul__(self, other: glm_typing.B8Vector3) -> bvec3: ...

    def __mod__(self, other: Union[glm_typing.B8Vector3, glm_typing.Number]) -> bvec3: ...
    def __rmod__(self, other: Union[glm_typing.B8Vector3, glm_typing.Number]) -> bvec3: ...
    def __imod__(self, other: Union[glm_typing.B8Vector3, glm_typing.Number]) -> bvec3: ...

    def __pow__(self, other: Union[glm_typing.B8Vector3, glm_typing.Number]) -> bvec3: ...
    def __rpow__(self, other: Union[glm_typing.B8Vector3, glm_typing.Number]) -> bvec3: ...
    def __ipow__(self, other: Union[glm_typing.B8Vector3, glm_typing.Number]) -> bvec3: ...

    def __truediv__(self, other: Union[glm_typing.B8Vector3, glm_typing.Number]) -> bvec3: ...
    def __rtruediv__(self, other: Union[glm_typing.B8Vector3, glm_typing.Number]) -> bvec3: ...
    def __itruediv__(self, other: Union[glm_typing.B8Vector3, glm_typing.Number]) -> bvec3: ...

    def __floordiv__(self, other: Union[glm_typing.B8Vector3, glm_typing.Number]) -> bvec3: ...
    def __rfloordiv__(self, other: Union[glm_typing.B8Vector3, glm_typing.Number]) -> bvec3: ...
    def __ifloordiv__(self, other: Union[glm_typing.B8Vector3, glm_typing.Number]) -> bvec3: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> bvec3: ...
    @overload
    def __matmul__(self, other: glm_typing.B8Vector3) -> bvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> bvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.B8Vector3) -> bvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> bvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.B8Vector3) -> bvec3: ...

    def __divmod__(self, other: bvec3) -> Tuple[bvec3, bvec3]: ...



class bvec4:
    x: bool
    y: bool
    z: bool
    w: bool


    @property
    def xy(self) -> b8vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.B8Vector2) -> None: ...

    @property
    def yx(self) -> b8vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.B8Vector2) -> None: ...

    @property
    def xz(self) -> b8vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.B8Vector2) -> None: ...

    @property
    def zx(self) -> b8vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.B8Vector2) -> None: ...

    @property
    def xw(self) -> b8vec2: ...
    @xw.setter
    def xw(self, value: glm_typing.B8Vector2) -> None: ...

    @property
    def wx(self) -> b8vec2: ...
    @wx.setter
    def wx(self, value: glm_typing.B8Vector2) -> None: ...

    @property
    def yz(self) -> b8vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.B8Vector2) -> None: ...

    @property
    def zy(self) -> b8vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.B8Vector2) -> None: ...

    @property
    def yw(self) -> b8vec2: ...
    @yw.setter
    def yw(self, value: glm_typing.B8Vector2) -> None: ...

    @property
    def wy(self) -> b8vec2: ...
    @wy.setter
    def wy(self, value: glm_typing.B8Vector2) -> None: ...

    @property
    def zw(self) -> b8vec2: ...
    @zw.setter
    def zw(self, value: glm_typing.B8Vector2) -> None: ...

    @property
    def wz(self) -> b8vec2: ...
    @wz.setter
    def wz(self, value: glm_typing.B8Vector2) -> None: ...

    @property
    def xyz(self) -> b8vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def xzy(self) -> b8vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def yxz(self) -> b8vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def yzx(self) -> b8vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def zxy(self) -> b8vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def zyx(self) -> b8vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def xyw(self) -> b8vec3: ...
    @xyw.setter
    def xyw(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def xwy(self) -> b8vec3: ...
    @xwy.setter
    def xwy(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def yxw(self) -> b8vec3: ...
    @yxw.setter
    def yxw(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def ywx(self) -> b8vec3: ...
    @ywx.setter
    def ywx(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def wxy(self) -> b8vec3: ...
    @wxy.setter
    def wxy(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def wyx(self) -> b8vec3: ...
    @wyx.setter
    def wyx(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def xzw(self) -> b8vec3: ...
    @xzw.setter
    def xzw(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def xwz(self) -> b8vec3: ...
    @xwz.setter
    def xwz(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def zxw(self) -> b8vec3: ...
    @zxw.setter
    def zxw(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def zwx(self) -> b8vec3: ...
    @zwx.setter
    def zwx(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def wxz(self) -> b8vec3: ...
    @wxz.setter
    def wxz(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def wzx(self) -> b8vec3: ...
    @wzx.setter
    def wzx(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def yzw(self) -> b8vec3: ...
    @yzw.setter
    def yzw(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def ywz(self) -> b8vec3: ...
    @ywz.setter
    def ywz(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def zyw(self) -> b8vec3: ...
    @zyw.setter
    def zyw(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def zwy(self) -> b8vec3: ...
    @zwy.setter
    def zwy(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def wyz(self) -> b8vec3: ...
    @wyz.setter
    def wyz(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def wzy(self) -> b8vec3: ...
    @wzy.setter
    def wzy(self, value: glm_typing.B8Vector3) -> None: ...

    @property
    def xyzw(self) -> b8vec4: ...
    @xyzw.setter
    def xyzw(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def xywz(self) -> b8vec4: ...
    @xywz.setter
    def xywz(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def xzyw(self) -> b8vec4: ...
    @xzyw.setter
    def xzyw(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def xzwy(self) -> b8vec4: ...
    @xzwy.setter
    def xzwy(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def xwyz(self) -> b8vec4: ...
    @xwyz.setter
    def xwyz(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def xwzy(self) -> b8vec4: ...
    @xwzy.setter
    def xwzy(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def yxzw(self) -> b8vec4: ...
    @yxzw.setter
    def yxzw(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def yxwz(self) -> b8vec4: ...
    @yxwz.setter
    def yxwz(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def yzxw(self) -> b8vec4: ...
    @yzxw.setter
    def yzxw(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def yzwx(self) -> b8vec4: ...
    @yzwx.setter
    def yzwx(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def ywxz(self) -> b8vec4: ...
    @ywxz.setter
    def ywxz(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def ywzx(self) -> b8vec4: ...
    @ywzx.setter
    def ywzx(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def zxyw(self) -> b8vec4: ...
    @zxyw.setter
    def zxyw(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def zxwy(self) -> b8vec4: ...
    @zxwy.setter
    def zxwy(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def zyxw(self) -> b8vec4: ...
    @zyxw.setter
    def zyxw(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def zywx(self) -> b8vec4: ...
    @zywx.setter
    def zywx(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def zwxy(self) -> b8vec4: ...
    @zwxy.setter
    def zwxy(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def zwyx(self) -> b8vec4: ...
    @zwyx.setter
    def zwyx(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def wxyz(self) -> b8vec4: ...
    @wxyz.setter
    def wxyz(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def wxzy(self) -> b8vec4: ...
    @wxzy.setter
    def wxzy(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def wyxz(self) -> b8vec4: ...
    @wyxz.setter
    def wyxz(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def wyzx(self) -> b8vec4: ...
    @wyzx.setter
    def wyzx(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def wzxy(self) -> b8vec4: ...
    @wzxy.setter
    def wzxy(self, value: glm_typing.B8Vector4) -> None: ...

    @property
    def wzyx(self) -> b8vec4: ...
    @wzyx.setter
    def wzyx(self, value: glm_typing.B8Vector4) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number, w: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.AnyAnyVector4) -> None: ...

    def __len__(self) -> Literal[4]: ...
    def __getitem__(self, index: int) -> bool: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[bool, None, None]: ...

    def __neg__(self) -> bvec4: ...
    def __pos__(self) -> bvec4: ...
    def __abs__(self) -> bvec4: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[bool]: ...
    def to_tuple(self) -> Tuple[bool, bool, bool, bool]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> bvec4: ...

    def __add__(self, other: Union[glm_typing.B8Vector4, glm_typing.Number]) -> bvec4: ...
    def __radd__(self, other: Union[glm_typing.B8Vector4, glm_typing.Number]) -> bvec4: ...
    def __iadd__(self, other: Union[glm_typing.B8Vector4, glm_typing.Number]) -> bvec4: ...

    def __sub__(self, other: Union[glm_typing.B8Vector4, glm_typing.Number]) -> bvec4: ...
    def __rsub__(self, other: Union[glm_typing.B8Vector4, glm_typing.Number]) -> bvec4: ...
    def __isub__(self, other: Union[glm_typing.B8Vector4, glm_typing.Number]) -> bvec4: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> bvec4: ...
    @overload
    def __mul__(self, other: glm_typing.B8Vector4) -> bvec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> bvec4: ...
    @overload
    def __rmul__(self, other: glm_typing.B8Vector4) -> bvec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> bvec4: ...
    @overload
    def __imul__(self, other: glm_typing.B8Vector4) -> bvec4: ...

    def __mod__(self, other: Union[glm_typing.B8Vector4, glm_typing.Number]) -> bvec4: ...
    def __rmod__(self, other: Union[glm_typing.B8Vector4, glm_typing.Number]) -> bvec4: ...
    def __imod__(self, other: Union[glm_typing.B8Vector4, glm_typing.Number]) -> bvec4: ...

    def __pow__(self, other: Union[glm_typing.B8Vector4, glm_typing.Number]) -> bvec4: ...
    def __rpow__(self, other: Union[glm_typing.B8Vector4, glm_typing.Number]) -> bvec4: ...
    def __ipow__(self, other: Union[glm_typing.B8Vector4, glm_typing.Number]) -> bvec4: ...

    def __truediv__(self, other: Union[glm_typing.B8Vector4, glm_typing.Number]) -> bvec4: ...
    def __rtruediv__(self, other: Union[glm_typing.B8Vector4, glm_typing.Number]) -> bvec4: ...
    def __itruediv__(self, other: Union[glm_typing.B8Vector4, glm_typing.Number]) -> bvec4: ...

    def __floordiv__(self, other: Union[glm_typing.B8Vector4, glm_typing.Number]) -> bvec4: ...
    def __rfloordiv__(self, other: Union[glm_typing.B8Vector4, glm_typing.Number]) -> bvec4: ...
    def __ifloordiv__(self, other: Union[glm_typing.B8Vector4, glm_typing.Number]) -> bvec4: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> bvec4: ...
    @overload
    def __matmul__(self, other: glm_typing.B8Vector4) -> bvec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> bvec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.B8Vector4) -> bvec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> bvec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.B8Vector4) -> bvec4: ...

    def __divmod__(self, other: bvec4) -> Tuple[bvec4, bvec4]: ...



class dmvec2:
    x: float
    y: float


    @property
    def xy(self) -> d64vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def yx(self) -> d64vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.D64Vector2) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector2, glm_typing.DAnyVector3, glm_typing.DAnyVector4]) -> None: ...

    def __len__(self) -> Literal[2]: ...
    def __getitem__(self, index: int) -> float: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[float, None, None]: ...

    def __neg__(self) -> dmvec2: ...
    def __pos__(self) -> dmvec2: ...
    def __abs__(self) -> dmvec2: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[float]: ...
    def to_tuple(self) -> Tuple[float, float]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> dmvec2: ...

    def __add__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dmvec2: ...
    def __radd__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dmvec2: ...
    def __iadd__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dmvec2: ...

    def __sub__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dmvec2: ...
    def __rsub__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dmvec2: ...
    def __isub__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dmvec2: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> dmvec2: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector2) -> dmvec2: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> dmvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector2) -> dmvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> dmvec2: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector2) -> dmvec2: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dmvec2: ...
    def __rmod__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dmvec2: ...
    def __imod__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dmvec2: ...

    def __pow__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dmvec2: ...
    def __rpow__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dmvec2: ...
    def __ipow__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dmvec2: ...

    def __truediv__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dmvec2: ...
    def __rtruediv__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dmvec2: ...
    def __itruediv__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dmvec2: ...

    def __floordiv__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dmvec2: ...
    def __rfloordiv__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dmvec2: ...
    def __ifloordiv__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dmvec2: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> dmvec2: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector2) -> dmvec2: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> dmvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector2) -> dmvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> dmvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector2) -> dmvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...

    def __divmod__(self, other: dmvec2) -> Tuple[dmvec2, dmvec2]: ...



class dmvec3:
    x: float
    y: float
    z: float


    @property
    def xy(self) -> d64vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def yx(self) -> d64vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def xz(self) -> d64vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def zx(self) -> d64vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def yz(self) -> d64vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def zy(self) -> d64vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def xyz(self) -> d64vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def xzy(self) -> d64vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def yxz(self) -> d64vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def yzx(self) -> d64vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def zxy(self) -> d64vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def zyx(self) -> d64vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.D64Vector3) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector3, glm_typing.DAnyVector4]) -> None: ...

    def __len__(self) -> Literal[3]: ...
    def __getitem__(self, index: int) -> float: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[float, None, None]: ...

    def __neg__(self) -> dmvec3: ...
    def __pos__(self) -> dmvec3: ...
    def __abs__(self) -> dmvec3: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[float]: ...
    def to_tuple(self) -> Tuple[float, float, float]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> dmvec3: ...

    def __add__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dmvec3: ...
    def __radd__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dmvec3: ...
    def __iadd__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dmvec3: ...

    def __sub__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dmvec3: ...
    def __rsub__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dmvec3: ...
    def __isub__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dmvec3: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> dmvec3: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector3) -> dmvec3: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> dmvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector3) -> dmvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> dmvec3: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector3) -> dmvec3: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dmvec3: ...
    def __rmod__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dmvec3: ...
    def __imod__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dmvec3: ...

    def __pow__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dmvec3: ...
    def __rpow__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dmvec3: ...
    def __ipow__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dmvec3: ...

    def __truediv__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dmvec3: ...
    def __rtruediv__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dmvec3: ...
    def __itruediv__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dmvec3: ...

    def __floordiv__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dmvec3: ...
    def __rfloordiv__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dmvec3: ...
    def __ifloordiv__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dmvec3: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> dmvec3: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector3) -> dmvec3: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> dmvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector3) -> dmvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> dmvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector3) -> dmvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...

    def __divmod__(self, other: dmvec3) -> Tuple[dmvec3, dmvec3]: ...



class dmvec4:
    x: float
    y: float
    z: float
    w: float


    @property
    def xy(self) -> d64vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def yx(self) -> d64vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def xz(self) -> d64vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def zx(self) -> d64vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def xw(self) -> d64vec2: ...
    @xw.setter
    def xw(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def wx(self) -> d64vec2: ...
    @wx.setter
    def wx(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def yz(self) -> d64vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def zy(self) -> d64vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def yw(self) -> d64vec2: ...
    @yw.setter
    def yw(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def wy(self) -> d64vec2: ...
    @wy.setter
    def wy(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def zw(self) -> d64vec2: ...
    @zw.setter
    def zw(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def wz(self) -> d64vec2: ...
    @wz.setter
    def wz(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def xyz(self) -> d64vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def xzy(self) -> d64vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def yxz(self) -> d64vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def yzx(self) -> d64vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def zxy(self) -> d64vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def zyx(self) -> d64vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def xyw(self) -> d64vec3: ...
    @xyw.setter
    def xyw(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def xwy(self) -> d64vec3: ...
    @xwy.setter
    def xwy(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def yxw(self) -> d64vec3: ...
    @yxw.setter
    def yxw(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def ywx(self) -> d64vec3: ...
    @ywx.setter
    def ywx(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def wxy(self) -> d64vec3: ...
    @wxy.setter
    def wxy(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def wyx(self) -> d64vec3: ...
    @wyx.setter
    def wyx(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def xzw(self) -> d64vec3: ...
    @xzw.setter
    def xzw(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def xwz(self) -> d64vec3: ...
    @xwz.setter
    def xwz(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def zxw(self) -> d64vec3: ...
    @zxw.setter
    def zxw(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def zwx(self) -> d64vec3: ...
    @zwx.setter
    def zwx(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def wxz(self) -> d64vec3: ...
    @wxz.setter
    def wxz(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def wzx(self) -> d64vec3: ...
    @wzx.setter
    def wzx(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def yzw(self) -> d64vec3: ...
    @yzw.setter
    def yzw(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def ywz(self) -> d64vec3: ...
    @ywz.setter
    def ywz(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def zyw(self) -> d64vec3: ...
    @zyw.setter
    def zyw(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def zwy(self) -> d64vec3: ...
    @zwy.setter
    def zwy(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def wyz(self) -> d64vec3: ...
    @wyz.setter
    def wyz(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def wzy(self) -> d64vec3: ...
    @wzy.setter
    def wzy(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def xyzw(self) -> d64vec4: ...
    @xyzw.setter
    def xyzw(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def xywz(self) -> d64vec4: ...
    @xywz.setter
    def xywz(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def xzyw(self) -> d64vec4: ...
    @xzyw.setter
    def xzyw(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def xzwy(self) -> d64vec4: ...
    @xzwy.setter
    def xzwy(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def xwyz(self) -> d64vec4: ...
    @xwyz.setter
    def xwyz(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def xwzy(self) -> d64vec4: ...
    @xwzy.setter
    def xwzy(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def yxzw(self) -> d64vec4: ...
    @yxzw.setter
    def yxzw(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def yxwz(self) -> d64vec4: ...
    @yxwz.setter
    def yxwz(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def yzxw(self) -> d64vec4: ...
    @yzxw.setter
    def yzxw(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def yzwx(self) -> d64vec4: ...
    @yzwx.setter
    def yzwx(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def ywxz(self) -> d64vec4: ...
    @ywxz.setter
    def ywxz(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def ywzx(self) -> d64vec4: ...
    @ywzx.setter
    def ywzx(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def zxyw(self) -> d64vec4: ...
    @zxyw.setter
    def zxyw(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def zxwy(self) -> d64vec4: ...
    @zxwy.setter
    def zxwy(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def zyxw(self) -> d64vec4: ...
    @zyxw.setter
    def zyxw(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def zywx(self) -> d64vec4: ...
    @zywx.setter
    def zywx(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def zwxy(self) -> d64vec4: ...
    @zwxy.setter
    def zwxy(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def zwyx(self) -> d64vec4: ...
    @zwyx.setter
    def zwyx(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def wxyz(self) -> d64vec4: ...
    @wxyz.setter
    def wxyz(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def wxzy(self) -> d64vec4: ...
    @wxzy.setter
    def wxzy(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def wyxz(self) -> d64vec4: ...
    @wyxz.setter
    def wyxz(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def wyzx(self) -> d64vec4: ...
    @wyzx.setter
    def wyzx(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def wzxy(self) -> d64vec4: ...
    @wzxy.setter
    def wzxy(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def wzyx(self) -> d64vec4: ...
    @wzyx.setter
    def wzyx(self, value: glm_typing.D64Vector4) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number, w: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.AnyAnyVector4) -> None: ...

    def __len__(self) -> Literal[4]: ...
    def __getitem__(self, index: int) -> float: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[float, None, None]: ...

    def __neg__(self) -> dmvec4: ...
    def __pos__(self) -> dmvec4: ...
    def __abs__(self) -> dmvec4: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[float]: ...
    def to_tuple(self) -> Tuple[float, float, float, float]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> dmvec4: ...

    def __add__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dmvec4: ...
    def __radd__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dmvec4: ...
    def __iadd__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dmvec4: ...

    def __sub__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dmvec4: ...
    def __rsub__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dmvec4: ...
    def __isub__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dmvec4: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> dmvec4: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector4) -> dmvec4: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> dmvec4: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector4) -> dmvec4: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> dmvec4: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector4) -> dmvec4: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dmvec4: ...
    def __rmod__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dmvec4: ...
    def __imod__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dmvec4: ...

    def __pow__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dmvec4: ...
    def __rpow__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dmvec4: ...
    def __ipow__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dmvec4: ...

    def __truediv__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dmvec4: ...
    def __rtruediv__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dmvec4: ...
    def __itruediv__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dmvec4: ...

    def __floordiv__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dmvec4: ...
    def __rfloordiv__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dmvec4: ...
    def __ifloordiv__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dmvec4: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> dmvec4: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector4) -> dmvec4: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> dmvec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector4) -> dmvec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> dmvec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector4) -> dmvec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...

    def __divmod__(self, other: dmvec4) -> Tuple[dmvec4, dmvec4]: ...


f64vec1 = dvec1

class dvec1:
    x: float



    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector1, glm_typing.DAnyVector2, glm_typing.DAnyVector3, glm_typing.DAnyVector4]) -> None: ...

    def __len__(self) -> Literal[1]: ...
    def __getitem__(self, index: int) -> float: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[float, None, None]: ...

    def __neg__(self) -> dvec1: ...
    def __pos__(self) -> dvec1: ...
    def __abs__(self) -> dvec1: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[float]: ...
    def to_tuple(self) -> Tuple[float]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> dvec1: ...

    def __add__(self, other: Union[glm_typing.D64Vector1, glm_typing.Number]) -> dvec1: ...
    def __radd__(self, other: Union[glm_typing.D64Vector1, glm_typing.Number]) -> dvec1: ...
    def __iadd__(self, other: Union[glm_typing.D64Vector1, glm_typing.Number]) -> dvec1: ...

    def __sub__(self, other: Union[glm_typing.D64Vector1, glm_typing.Number]) -> dvec1: ...
    def __rsub__(self, other: Union[glm_typing.D64Vector1, glm_typing.Number]) -> dvec1: ...
    def __isub__(self, other: Union[glm_typing.D64Vector1, glm_typing.Number]) -> dvec1: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> dvec1: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector1) -> dvec1: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> dvec1: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector1) -> dvec1: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> dvec1: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector1) -> dvec1: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.D64Vector1, glm_typing.Number]) -> dvec1: ...
    def __rmod__(self, other: Union[glm_typing.D64Vector1, glm_typing.Number]) -> dvec1: ...
    def __imod__(self, other: Union[glm_typing.D64Vector1, glm_typing.Number]) -> dvec1: ...

    def __pow__(self, other: Union[glm_typing.D64Vector1, glm_typing.Number]) -> dvec1: ...
    def __rpow__(self, other: Union[glm_typing.D64Vector1, glm_typing.Number]) -> dvec1: ...
    def __ipow__(self, other: Union[glm_typing.D64Vector1, glm_typing.Number]) -> dvec1: ...

    def __truediv__(self, other: Union[glm_typing.D64Vector1, glm_typing.Number]) -> dvec1: ...
    def __rtruediv__(self, other: Union[glm_typing.D64Vector1, glm_typing.Number]) -> dvec1: ...
    def __itruediv__(self, other: Union[glm_typing.D64Vector1, glm_typing.Number]) -> dvec1: ...

    def __floordiv__(self, other: Union[glm_typing.D64Vector1, glm_typing.Number]) -> dvec1: ...
    def __rfloordiv__(self, other: Union[glm_typing.D64Vector1, glm_typing.Number]) -> dvec1: ...
    def __ifloordiv__(self, other: Union[glm_typing.D64Vector1, glm_typing.Number]) -> dvec1: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> dvec1: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector1) -> dvec1: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> dvec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector1) -> dvec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> dvec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector1) -> dvec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...

    def __divmod__(self, other: dvec1) -> Tuple[dvec1, dvec1]: ...


f64vec2 = dvec2

class dvec2:
    x: float
    y: float


    @property
    def xy(self) -> d64vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def yx(self) -> d64vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.D64Vector2) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector2, glm_typing.DAnyVector3, glm_typing.DAnyVector4]) -> None: ...

    def __len__(self) -> Literal[2]: ...
    def __getitem__(self, index: int) -> float: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[float, None, None]: ...

    def __neg__(self) -> dvec2: ...
    def __pos__(self) -> dvec2: ...
    def __abs__(self) -> dvec2: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[float]: ...
    def to_tuple(self) -> Tuple[float, float]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> dvec2: ...

    def __add__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dvec2: ...
    def __radd__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dvec2: ...
    def __iadd__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dvec2: ...

    def __sub__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dvec2: ...
    def __rsub__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dvec2: ...
    def __isub__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dvec2: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> dvec2: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector2) -> dvec2: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> dvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector2) -> dvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> dvec2: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector2) -> dvec2: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dvec2: ...
    def __rmod__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dvec2: ...
    def __imod__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dvec2: ...

    def __pow__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dvec2: ...
    def __rpow__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dvec2: ...
    def __ipow__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dvec2: ...

    def __truediv__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dvec2: ...
    def __rtruediv__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dvec2: ...
    def __itruediv__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dvec2: ...

    def __floordiv__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dvec2: ...
    def __rfloordiv__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dvec2: ...
    def __ifloordiv__(self, other: Union[glm_typing.D64Vector2, glm_typing.Number]) -> dvec2: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> dvec2: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector2) -> dvec2: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> dvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector2) -> dvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> dvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector2) -> dvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...

    def __divmod__(self, other: dvec2) -> Tuple[dvec2, dvec2]: ...


f64vec3 = dvec3

class dvec3:
    x: float
    y: float
    z: float


    @property
    def xy(self) -> d64vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def yx(self) -> d64vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def xz(self) -> d64vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def zx(self) -> d64vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def yz(self) -> d64vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def zy(self) -> d64vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def xyz(self) -> d64vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def xzy(self) -> d64vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def yxz(self) -> d64vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def yzx(self) -> d64vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def zxy(self) -> d64vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def zyx(self) -> d64vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.D64Vector3) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector3, glm_typing.DAnyVector4]) -> None: ...

    def __len__(self) -> Literal[3]: ...
    def __getitem__(self, index: int) -> float: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[float, None, None]: ...

    def __neg__(self) -> dvec3: ...
    def __pos__(self) -> dvec3: ...
    def __abs__(self) -> dvec3: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[float]: ...
    def to_tuple(self) -> Tuple[float, float, float]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> dvec3: ...

    def __add__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dvec3: ...
    def __radd__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dvec3: ...
    def __iadd__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dvec3: ...

    def __sub__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dvec3: ...
    def __rsub__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dvec3: ...
    def __isub__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dvec3: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> dvec3: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> dvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> dvec3: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dvec3: ...
    def __rmod__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dvec3: ...
    def __imod__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dvec3: ...

    def __pow__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dvec3: ...
    def __rpow__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dvec3: ...
    def __ipow__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dvec3: ...

    def __truediv__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dvec3: ...
    def __rtruediv__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dvec3: ...
    def __itruediv__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dvec3: ...

    def __floordiv__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dvec3: ...
    def __rfloordiv__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dvec3: ...
    def __ifloordiv__(self, other: Union[glm_typing.D64Vector3, glm_typing.Number]) -> dvec3: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> dvec3: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> dvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> dvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...

    def __divmod__(self, other: dvec3) -> Tuple[dvec3, dvec3]: ...


f64vec4 = dvec4

class dvec4:
    x: float
    y: float
    z: float
    w: float


    @property
    def xy(self) -> d64vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def yx(self) -> d64vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def xz(self) -> d64vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def zx(self) -> d64vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def xw(self) -> d64vec2: ...
    @xw.setter
    def xw(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def wx(self) -> d64vec2: ...
    @wx.setter
    def wx(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def yz(self) -> d64vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def zy(self) -> d64vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def yw(self) -> d64vec2: ...
    @yw.setter
    def yw(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def wy(self) -> d64vec2: ...
    @wy.setter
    def wy(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def zw(self) -> d64vec2: ...
    @zw.setter
    def zw(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def wz(self) -> d64vec2: ...
    @wz.setter
    def wz(self, value: glm_typing.D64Vector2) -> None: ...

    @property
    def xyz(self) -> d64vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def xzy(self) -> d64vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def yxz(self) -> d64vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def yzx(self) -> d64vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def zxy(self) -> d64vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def zyx(self) -> d64vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def xyw(self) -> d64vec3: ...
    @xyw.setter
    def xyw(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def xwy(self) -> d64vec3: ...
    @xwy.setter
    def xwy(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def yxw(self) -> d64vec3: ...
    @yxw.setter
    def yxw(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def ywx(self) -> d64vec3: ...
    @ywx.setter
    def ywx(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def wxy(self) -> d64vec3: ...
    @wxy.setter
    def wxy(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def wyx(self) -> d64vec3: ...
    @wyx.setter
    def wyx(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def xzw(self) -> d64vec3: ...
    @xzw.setter
    def xzw(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def xwz(self) -> d64vec3: ...
    @xwz.setter
    def xwz(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def zxw(self) -> d64vec3: ...
    @zxw.setter
    def zxw(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def zwx(self) -> d64vec3: ...
    @zwx.setter
    def zwx(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def wxz(self) -> d64vec3: ...
    @wxz.setter
    def wxz(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def wzx(self) -> d64vec3: ...
    @wzx.setter
    def wzx(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def yzw(self) -> d64vec3: ...
    @yzw.setter
    def yzw(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def ywz(self) -> d64vec3: ...
    @ywz.setter
    def ywz(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def zyw(self) -> d64vec3: ...
    @zyw.setter
    def zyw(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def zwy(self) -> d64vec3: ...
    @zwy.setter
    def zwy(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def wyz(self) -> d64vec3: ...
    @wyz.setter
    def wyz(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def wzy(self) -> d64vec3: ...
    @wzy.setter
    def wzy(self, value: glm_typing.D64Vector3) -> None: ...

    @property
    def xyzw(self) -> d64vec4: ...
    @xyzw.setter
    def xyzw(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def xywz(self) -> d64vec4: ...
    @xywz.setter
    def xywz(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def xzyw(self) -> d64vec4: ...
    @xzyw.setter
    def xzyw(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def xzwy(self) -> d64vec4: ...
    @xzwy.setter
    def xzwy(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def xwyz(self) -> d64vec4: ...
    @xwyz.setter
    def xwyz(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def xwzy(self) -> d64vec4: ...
    @xwzy.setter
    def xwzy(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def yxzw(self) -> d64vec4: ...
    @yxzw.setter
    def yxzw(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def yxwz(self) -> d64vec4: ...
    @yxwz.setter
    def yxwz(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def yzxw(self) -> d64vec4: ...
    @yzxw.setter
    def yzxw(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def yzwx(self) -> d64vec4: ...
    @yzwx.setter
    def yzwx(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def ywxz(self) -> d64vec4: ...
    @ywxz.setter
    def ywxz(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def ywzx(self) -> d64vec4: ...
    @ywzx.setter
    def ywzx(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def zxyw(self) -> d64vec4: ...
    @zxyw.setter
    def zxyw(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def zxwy(self) -> d64vec4: ...
    @zxwy.setter
    def zxwy(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def zyxw(self) -> d64vec4: ...
    @zyxw.setter
    def zyxw(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def zywx(self) -> d64vec4: ...
    @zywx.setter
    def zywx(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def zwxy(self) -> d64vec4: ...
    @zwxy.setter
    def zwxy(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def zwyx(self) -> d64vec4: ...
    @zwyx.setter
    def zwyx(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def wxyz(self) -> d64vec4: ...
    @wxyz.setter
    def wxyz(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def wxzy(self) -> d64vec4: ...
    @wxzy.setter
    def wxzy(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def wyxz(self) -> d64vec4: ...
    @wyxz.setter
    def wyxz(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def wyzx(self) -> d64vec4: ...
    @wyzx.setter
    def wyzx(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def wzxy(self) -> d64vec4: ...
    @wzxy.setter
    def wzxy(self, value: glm_typing.D64Vector4) -> None: ...

    @property
    def wzyx(self) -> d64vec4: ...
    @wzyx.setter
    def wzyx(self, value: glm_typing.D64Vector4) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number, w: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.AnyAnyVector4) -> None: ...

    def __len__(self) -> Literal[4]: ...
    def __getitem__(self, index: int) -> float: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[float, None, None]: ...

    def __neg__(self) -> dvec4: ...
    def __pos__(self) -> dvec4: ...
    def __abs__(self) -> dvec4: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[float]: ...
    def to_tuple(self) -> Tuple[float, float, float, float]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> dvec4: ...

    def __add__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dvec4: ...
    def __radd__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dvec4: ...
    def __iadd__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dvec4: ...

    def __sub__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dvec4: ...
    def __rsub__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dvec4: ...
    def __isub__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dvec4: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> dvec4: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector4) -> dvec4: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> dvec4: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector4) -> dvec4: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> dvec4: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector4) -> dvec4: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dvec4: ...
    def __rmod__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dvec4: ...
    def __imod__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dvec4: ...

    def __pow__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dvec4: ...
    def __rpow__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dvec4: ...
    def __ipow__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dvec4: ...

    def __truediv__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dvec4: ...
    def __rtruediv__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dvec4: ...
    def __itruediv__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dvec4: ...

    def __floordiv__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dvec4: ...
    def __rfloordiv__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dvec4: ...
    def __ifloordiv__(self, other: Union[glm_typing.D64Vector4, glm_typing.Number]) -> dvec4: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> dvec4: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector4) -> dvec4: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> dvec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector4) -> dvec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> dvec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector4) -> dvec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Matrix4x2) -> vec4: ...

    def __divmod__(self, other: dvec4) -> Tuple[dvec4, dvec4]: ...



class i16vec1:
    x: int



    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector1, glm_typing.IAnyVector2, glm_typing.IAnyVector3, glm_typing.IAnyVector4]) -> None: ...

    def __len__(self) -> Literal[1]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> i16vec1: ...
    def __pos__(self) -> i16vec1: ...
    def __abs__(self) -> i16vec1: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> i16vec1: ...

    def __add__(self, other: Union[glm_typing.I16Vector1, glm_typing.Number]) -> i16vec1: ...
    def __radd__(self, other: Union[glm_typing.I16Vector1, glm_typing.Number]) -> i16vec1: ...
    def __iadd__(self, other: Union[glm_typing.I16Vector1, glm_typing.Number]) -> i16vec1: ...

    def __sub__(self, other: Union[glm_typing.I16Vector1, glm_typing.Number]) -> i16vec1: ...
    def __rsub__(self, other: Union[glm_typing.I16Vector1, glm_typing.Number]) -> i16vec1: ...
    def __isub__(self, other: Union[glm_typing.I16Vector1, glm_typing.Number]) -> i16vec1: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> i16vec1: ...
    @overload
    def __mul__(self, other: glm_typing.I16Vector1) -> i16vec1: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> i16vec1: ...
    @overload
    def __rmul__(self, other: glm_typing.I16Vector1) -> i16vec1: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> i16vec1: ...
    @overload
    def __imul__(self, other: glm_typing.I16Vector1) -> i16vec1: ...

    def __mod__(self, other: Union[glm_typing.I16Vector1, glm_typing.Number]) -> i16vec1: ...
    def __rmod__(self, other: Union[glm_typing.I16Vector1, glm_typing.Number]) -> i16vec1: ...
    def __imod__(self, other: Union[glm_typing.I16Vector1, glm_typing.Number]) -> i16vec1: ...

    def __pow__(self, other: Union[glm_typing.I16Vector1, glm_typing.Number]) -> i16vec1: ...
    def __rpow__(self, other: Union[glm_typing.I16Vector1, glm_typing.Number]) -> i16vec1: ...
    def __ipow__(self, other: Union[glm_typing.I16Vector1, glm_typing.Number]) -> i16vec1: ...

    def __truediv__(self, other: Union[glm_typing.I16Vector1, glm_typing.Number]) -> i16vec1: ...
    def __rtruediv__(self, other: Union[glm_typing.I16Vector1, glm_typing.Number]) -> i16vec1: ...
    def __itruediv__(self, other: Union[glm_typing.I16Vector1, glm_typing.Number]) -> i16vec1: ...

    def __floordiv__(self, other: Union[glm_typing.I16Vector1, glm_typing.Number]) -> i16vec1: ...
    def __rfloordiv__(self, other: Union[glm_typing.I16Vector1, glm_typing.Number]) -> i16vec1: ...
    def __ifloordiv__(self, other: Union[glm_typing.I16Vector1, glm_typing.Number]) -> i16vec1: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> i16vec1: ...
    @overload
    def __matmul__(self, other: glm_typing.I16Vector1) -> i16vec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> i16vec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I16Vector1) -> i16vec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> i16vec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.I16Vector1) -> i16vec1: ...

    def __divmod__(self, other: i16vec1) -> Tuple[i16vec1, i16vec1]: ...



class i16vec2:
    x: int
    y: int


    @property
    def xy(self) -> i16vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.I16Vector2) -> None: ...

    @property
    def yx(self) -> i16vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.I16Vector2) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector2, glm_typing.IAnyVector3, glm_typing.IAnyVector4]) -> None: ...

    def __len__(self) -> Literal[2]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> i16vec2: ...
    def __pos__(self) -> i16vec2: ...
    def __abs__(self) -> i16vec2: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> i16vec2: ...

    def __add__(self, other: Union[glm_typing.I16Vector2, glm_typing.Number]) -> i16vec2: ...
    def __radd__(self, other: Union[glm_typing.I16Vector2, glm_typing.Number]) -> i16vec2: ...
    def __iadd__(self, other: Union[glm_typing.I16Vector2, glm_typing.Number]) -> i16vec2: ...

    def __sub__(self, other: Union[glm_typing.I16Vector2, glm_typing.Number]) -> i16vec2: ...
    def __rsub__(self, other: Union[glm_typing.I16Vector2, glm_typing.Number]) -> i16vec2: ...
    def __isub__(self, other: Union[glm_typing.I16Vector2, glm_typing.Number]) -> i16vec2: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> i16vec2: ...
    @overload
    def __mul__(self, other: glm_typing.I16Vector2) -> i16vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> i16vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.I16Vector2) -> i16vec2: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> i16vec2: ...
    @overload
    def __imul__(self, other: glm_typing.I16Vector2) -> i16vec2: ...

    def __mod__(self, other: Union[glm_typing.I16Vector2, glm_typing.Number]) -> i16vec2: ...
    def __rmod__(self, other: Union[glm_typing.I16Vector2, glm_typing.Number]) -> i16vec2: ...
    def __imod__(self, other: Union[glm_typing.I16Vector2, glm_typing.Number]) -> i16vec2: ...

    def __pow__(self, other: Union[glm_typing.I16Vector2, glm_typing.Number]) -> i16vec2: ...
    def __rpow__(self, other: Union[glm_typing.I16Vector2, glm_typing.Number]) -> i16vec2: ...
    def __ipow__(self, other: Union[glm_typing.I16Vector2, glm_typing.Number]) -> i16vec2: ...

    def __truediv__(self, other: Union[glm_typing.I16Vector2, glm_typing.Number]) -> i16vec2: ...
    def __rtruediv__(self, other: Union[glm_typing.I16Vector2, glm_typing.Number]) -> i16vec2: ...
    def __itruediv__(self, other: Union[glm_typing.I16Vector2, glm_typing.Number]) -> i16vec2: ...

    def __floordiv__(self, other: Union[glm_typing.I16Vector2, glm_typing.Number]) -> i16vec2: ...
    def __rfloordiv__(self, other: Union[glm_typing.I16Vector2, glm_typing.Number]) -> i16vec2: ...
    def __ifloordiv__(self, other: Union[glm_typing.I16Vector2, glm_typing.Number]) -> i16vec2: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> i16vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.I16Vector2) -> i16vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> i16vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I16Vector2) -> i16vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> i16vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.I16Vector2) -> i16vec2: ...

    def __divmod__(self, other: i16vec2) -> Tuple[i16vec2, i16vec2]: ...



class i16vec3:
    x: int
    y: int
    z: int


    @property
    def xy(self) -> i16vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.I16Vector2) -> None: ...

    @property
    def yx(self) -> i16vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.I16Vector2) -> None: ...

    @property
    def xz(self) -> i16vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.I16Vector2) -> None: ...

    @property
    def zx(self) -> i16vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.I16Vector2) -> None: ...

    @property
    def yz(self) -> i16vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.I16Vector2) -> None: ...

    @property
    def zy(self) -> i16vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.I16Vector2) -> None: ...

    @property
    def xyz(self) -> i16vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def xzy(self) -> i16vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def yxz(self) -> i16vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def yzx(self) -> i16vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def zxy(self) -> i16vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def zyx(self) -> i16vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.I16Vector3) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector3, glm_typing.IAnyVector4]) -> None: ...

    def __len__(self) -> Literal[3]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> i16vec3: ...
    def __pos__(self) -> i16vec3: ...
    def __abs__(self) -> i16vec3: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> i16vec3: ...

    def __add__(self, other: Union[glm_typing.I16Vector3, glm_typing.Number]) -> i16vec3: ...
    def __radd__(self, other: Union[glm_typing.I16Vector3, glm_typing.Number]) -> i16vec3: ...
    def __iadd__(self, other: Union[glm_typing.I16Vector3, glm_typing.Number]) -> i16vec3: ...

    def __sub__(self, other: Union[glm_typing.I16Vector3, glm_typing.Number]) -> i16vec3: ...
    def __rsub__(self, other: Union[glm_typing.I16Vector3, glm_typing.Number]) -> i16vec3: ...
    def __isub__(self, other: Union[glm_typing.I16Vector3, glm_typing.Number]) -> i16vec3: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> i16vec3: ...
    @overload
    def __mul__(self, other: glm_typing.I16Vector3) -> i16vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> i16vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.I16Vector3) -> i16vec3: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> i16vec3: ...
    @overload
    def __imul__(self, other: glm_typing.I16Vector3) -> i16vec3: ...

    def __mod__(self, other: Union[glm_typing.I16Vector3, glm_typing.Number]) -> i16vec3: ...
    def __rmod__(self, other: Union[glm_typing.I16Vector3, glm_typing.Number]) -> i16vec3: ...
    def __imod__(self, other: Union[glm_typing.I16Vector3, glm_typing.Number]) -> i16vec3: ...

    def __pow__(self, other: Union[glm_typing.I16Vector3, glm_typing.Number]) -> i16vec3: ...
    def __rpow__(self, other: Union[glm_typing.I16Vector3, glm_typing.Number]) -> i16vec3: ...
    def __ipow__(self, other: Union[glm_typing.I16Vector3, glm_typing.Number]) -> i16vec3: ...

    def __truediv__(self, other: Union[glm_typing.I16Vector3, glm_typing.Number]) -> i16vec3: ...
    def __rtruediv__(self, other: Union[glm_typing.I16Vector3, glm_typing.Number]) -> i16vec3: ...
    def __itruediv__(self, other: Union[glm_typing.I16Vector3, glm_typing.Number]) -> i16vec3: ...

    def __floordiv__(self, other: Union[glm_typing.I16Vector3, glm_typing.Number]) -> i16vec3: ...
    def __rfloordiv__(self, other: Union[glm_typing.I16Vector3, glm_typing.Number]) -> i16vec3: ...
    def __ifloordiv__(self, other: Union[glm_typing.I16Vector3, glm_typing.Number]) -> i16vec3: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> i16vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.I16Vector3) -> i16vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> i16vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I16Vector3) -> i16vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> i16vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.I16Vector3) -> i16vec3: ...

    def __divmod__(self, other: i16vec3) -> Tuple[i16vec3, i16vec3]: ...



class i16vec4:
    x: int
    y: int
    z: int
    w: int


    @property
    def xy(self) -> i16vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.I16Vector2) -> None: ...

    @property
    def yx(self) -> i16vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.I16Vector2) -> None: ...

    @property
    def xz(self) -> i16vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.I16Vector2) -> None: ...

    @property
    def zx(self) -> i16vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.I16Vector2) -> None: ...

    @property
    def xw(self) -> i16vec2: ...
    @xw.setter
    def xw(self, value: glm_typing.I16Vector2) -> None: ...

    @property
    def wx(self) -> i16vec2: ...
    @wx.setter
    def wx(self, value: glm_typing.I16Vector2) -> None: ...

    @property
    def yz(self) -> i16vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.I16Vector2) -> None: ...

    @property
    def zy(self) -> i16vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.I16Vector2) -> None: ...

    @property
    def yw(self) -> i16vec2: ...
    @yw.setter
    def yw(self, value: glm_typing.I16Vector2) -> None: ...

    @property
    def wy(self) -> i16vec2: ...
    @wy.setter
    def wy(self, value: glm_typing.I16Vector2) -> None: ...

    @property
    def zw(self) -> i16vec2: ...
    @zw.setter
    def zw(self, value: glm_typing.I16Vector2) -> None: ...

    @property
    def wz(self) -> i16vec2: ...
    @wz.setter
    def wz(self, value: glm_typing.I16Vector2) -> None: ...

    @property
    def xyz(self) -> i16vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def xzy(self) -> i16vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def yxz(self) -> i16vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def yzx(self) -> i16vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def zxy(self) -> i16vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def zyx(self) -> i16vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def xyw(self) -> i16vec3: ...
    @xyw.setter
    def xyw(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def xwy(self) -> i16vec3: ...
    @xwy.setter
    def xwy(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def yxw(self) -> i16vec3: ...
    @yxw.setter
    def yxw(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def ywx(self) -> i16vec3: ...
    @ywx.setter
    def ywx(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def wxy(self) -> i16vec3: ...
    @wxy.setter
    def wxy(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def wyx(self) -> i16vec3: ...
    @wyx.setter
    def wyx(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def xzw(self) -> i16vec3: ...
    @xzw.setter
    def xzw(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def xwz(self) -> i16vec3: ...
    @xwz.setter
    def xwz(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def zxw(self) -> i16vec3: ...
    @zxw.setter
    def zxw(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def zwx(self) -> i16vec3: ...
    @zwx.setter
    def zwx(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def wxz(self) -> i16vec3: ...
    @wxz.setter
    def wxz(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def wzx(self) -> i16vec3: ...
    @wzx.setter
    def wzx(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def yzw(self) -> i16vec3: ...
    @yzw.setter
    def yzw(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def ywz(self) -> i16vec3: ...
    @ywz.setter
    def ywz(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def zyw(self) -> i16vec3: ...
    @zyw.setter
    def zyw(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def zwy(self) -> i16vec3: ...
    @zwy.setter
    def zwy(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def wyz(self) -> i16vec3: ...
    @wyz.setter
    def wyz(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def wzy(self) -> i16vec3: ...
    @wzy.setter
    def wzy(self, value: glm_typing.I16Vector3) -> None: ...

    @property
    def xyzw(self) -> i16vec4: ...
    @xyzw.setter
    def xyzw(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def xywz(self) -> i16vec4: ...
    @xywz.setter
    def xywz(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def xzyw(self) -> i16vec4: ...
    @xzyw.setter
    def xzyw(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def xzwy(self) -> i16vec4: ...
    @xzwy.setter
    def xzwy(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def xwyz(self) -> i16vec4: ...
    @xwyz.setter
    def xwyz(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def xwzy(self) -> i16vec4: ...
    @xwzy.setter
    def xwzy(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def yxzw(self) -> i16vec4: ...
    @yxzw.setter
    def yxzw(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def yxwz(self) -> i16vec4: ...
    @yxwz.setter
    def yxwz(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def yzxw(self) -> i16vec4: ...
    @yzxw.setter
    def yzxw(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def yzwx(self) -> i16vec4: ...
    @yzwx.setter
    def yzwx(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def ywxz(self) -> i16vec4: ...
    @ywxz.setter
    def ywxz(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def ywzx(self) -> i16vec4: ...
    @ywzx.setter
    def ywzx(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def zxyw(self) -> i16vec4: ...
    @zxyw.setter
    def zxyw(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def zxwy(self) -> i16vec4: ...
    @zxwy.setter
    def zxwy(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def zyxw(self) -> i16vec4: ...
    @zyxw.setter
    def zyxw(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def zywx(self) -> i16vec4: ...
    @zywx.setter
    def zywx(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def zwxy(self) -> i16vec4: ...
    @zwxy.setter
    def zwxy(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def zwyx(self) -> i16vec4: ...
    @zwyx.setter
    def zwyx(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def wxyz(self) -> i16vec4: ...
    @wxyz.setter
    def wxyz(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def wxzy(self) -> i16vec4: ...
    @wxzy.setter
    def wxzy(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def wyxz(self) -> i16vec4: ...
    @wyxz.setter
    def wyxz(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def wyzx(self) -> i16vec4: ...
    @wyzx.setter
    def wyzx(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def wzxy(self) -> i16vec4: ...
    @wzxy.setter
    def wzxy(self, value: glm_typing.I16Vector4) -> None: ...

    @property
    def wzyx(self) -> i16vec4: ...
    @wzyx.setter
    def wzyx(self, value: glm_typing.I16Vector4) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number, w: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.AnyAnyVector4) -> None: ...

    def __len__(self) -> Literal[4]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> i16vec4: ...
    def __pos__(self) -> i16vec4: ...
    def __abs__(self) -> i16vec4: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int, int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> i16vec4: ...

    def __add__(self, other: Union[glm_typing.I16Vector4, glm_typing.Number]) -> i16vec4: ...
    def __radd__(self, other: Union[glm_typing.I16Vector4, glm_typing.Number]) -> i16vec4: ...
    def __iadd__(self, other: Union[glm_typing.I16Vector4, glm_typing.Number]) -> i16vec4: ...

    def __sub__(self, other: Union[glm_typing.I16Vector4, glm_typing.Number]) -> i16vec4: ...
    def __rsub__(self, other: Union[glm_typing.I16Vector4, glm_typing.Number]) -> i16vec4: ...
    def __isub__(self, other: Union[glm_typing.I16Vector4, glm_typing.Number]) -> i16vec4: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> i16vec4: ...
    @overload
    def __mul__(self, other: glm_typing.I16Vector4) -> i16vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> i16vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.I16Vector4) -> i16vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> i16vec4: ...
    @overload
    def __imul__(self, other: glm_typing.I16Vector4) -> i16vec4: ...

    def __mod__(self, other: Union[glm_typing.I16Vector4, glm_typing.Number]) -> i16vec4: ...
    def __rmod__(self, other: Union[glm_typing.I16Vector4, glm_typing.Number]) -> i16vec4: ...
    def __imod__(self, other: Union[glm_typing.I16Vector4, glm_typing.Number]) -> i16vec4: ...

    def __pow__(self, other: Union[glm_typing.I16Vector4, glm_typing.Number]) -> i16vec4: ...
    def __rpow__(self, other: Union[glm_typing.I16Vector4, glm_typing.Number]) -> i16vec4: ...
    def __ipow__(self, other: Union[glm_typing.I16Vector4, glm_typing.Number]) -> i16vec4: ...

    def __truediv__(self, other: Union[glm_typing.I16Vector4, glm_typing.Number]) -> i16vec4: ...
    def __rtruediv__(self, other: Union[glm_typing.I16Vector4, glm_typing.Number]) -> i16vec4: ...
    def __itruediv__(self, other: Union[glm_typing.I16Vector4, glm_typing.Number]) -> i16vec4: ...

    def __floordiv__(self, other: Union[glm_typing.I16Vector4, glm_typing.Number]) -> i16vec4: ...
    def __rfloordiv__(self, other: Union[glm_typing.I16Vector4, glm_typing.Number]) -> i16vec4: ...
    def __ifloordiv__(self, other: Union[glm_typing.I16Vector4, glm_typing.Number]) -> i16vec4: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> i16vec4: ...
    @overload
    def __matmul__(self, other: glm_typing.I16Vector4) -> i16vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> i16vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I16Vector4) -> i16vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> i16vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.I16Vector4) -> i16vec4: ...

    def __divmod__(self, other: i16vec4) -> Tuple[i16vec4, i16vec4]: ...



class i64vec1:
    x: int



    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector1, glm_typing.IAnyVector2, glm_typing.IAnyVector3, glm_typing.IAnyVector4]) -> None: ...

    def __len__(self) -> Literal[1]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> i64vec1: ...
    def __pos__(self) -> i64vec1: ...
    def __abs__(self) -> i64vec1: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> i64vec1: ...

    def __add__(self, other: Union[glm_typing.I64Vector1, glm_typing.Number]) -> i64vec1: ...
    def __radd__(self, other: Union[glm_typing.I64Vector1, glm_typing.Number]) -> i64vec1: ...
    def __iadd__(self, other: Union[glm_typing.I64Vector1, glm_typing.Number]) -> i64vec1: ...

    def __sub__(self, other: Union[glm_typing.I64Vector1, glm_typing.Number]) -> i64vec1: ...
    def __rsub__(self, other: Union[glm_typing.I64Vector1, glm_typing.Number]) -> i64vec1: ...
    def __isub__(self, other: Union[glm_typing.I64Vector1, glm_typing.Number]) -> i64vec1: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> i64vec1: ...
    @overload
    def __mul__(self, other: glm_typing.I64Vector1) -> i64vec1: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> i64vec1: ...
    @overload
    def __rmul__(self, other: glm_typing.I64Vector1) -> i64vec1: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> i64vec1: ...
    @overload
    def __imul__(self, other: glm_typing.I64Vector1) -> i64vec1: ...

    def __mod__(self, other: Union[glm_typing.I64Vector1, glm_typing.Number]) -> i64vec1: ...
    def __rmod__(self, other: Union[glm_typing.I64Vector1, glm_typing.Number]) -> i64vec1: ...
    def __imod__(self, other: Union[glm_typing.I64Vector1, glm_typing.Number]) -> i64vec1: ...

    def __pow__(self, other: Union[glm_typing.I64Vector1, glm_typing.Number]) -> i64vec1: ...
    def __rpow__(self, other: Union[glm_typing.I64Vector1, glm_typing.Number]) -> i64vec1: ...
    def __ipow__(self, other: Union[glm_typing.I64Vector1, glm_typing.Number]) -> i64vec1: ...

    def __truediv__(self, other: Union[glm_typing.I64Vector1, glm_typing.Number]) -> i64vec1: ...
    def __rtruediv__(self, other: Union[glm_typing.I64Vector1, glm_typing.Number]) -> i64vec1: ...
    def __itruediv__(self, other: Union[glm_typing.I64Vector1, glm_typing.Number]) -> i64vec1: ...

    def __floordiv__(self, other: Union[glm_typing.I64Vector1, glm_typing.Number]) -> i64vec1: ...
    def __rfloordiv__(self, other: Union[glm_typing.I64Vector1, glm_typing.Number]) -> i64vec1: ...
    def __ifloordiv__(self, other: Union[glm_typing.I64Vector1, glm_typing.Number]) -> i64vec1: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> i64vec1: ...
    @overload
    def __matmul__(self, other: glm_typing.I64Vector1) -> i64vec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> i64vec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I64Vector1) -> i64vec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> i64vec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.I64Vector1) -> i64vec1: ...

    def __divmod__(self, other: i64vec1) -> Tuple[i64vec1, i64vec1]: ...



class i64vec2:
    x: int
    y: int


    @property
    def xy(self) -> i64vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.I64Vector2) -> None: ...

    @property
    def yx(self) -> i64vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.I64Vector2) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector2, glm_typing.IAnyVector3, glm_typing.IAnyVector4]) -> None: ...

    def __len__(self) -> Literal[2]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> i64vec2: ...
    def __pos__(self) -> i64vec2: ...
    def __abs__(self) -> i64vec2: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> i64vec2: ...

    def __add__(self, other: Union[glm_typing.I64Vector2, glm_typing.Number]) -> i64vec2: ...
    def __radd__(self, other: Union[glm_typing.I64Vector2, glm_typing.Number]) -> i64vec2: ...
    def __iadd__(self, other: Union[glm_typing.I64Vector2, glm_typing.Number]) -> i64vec2: ...

    def __sub__(self, other: Union[glm_typing.I64Vector2, glm_typing.Number]) -> i64vec2: ...
    def __rsub__(self, other: Union[glm_typing.I64Vector2, glm_typing.Number]) -> i64vec2: ...
    def __isub__(self, other: Union[glm_typing.I64Vector2, glm_typing.Number]) -> i64vec2: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> i64vec2: ...
    @overload
    def __mul__(self, other: glm_typing.I64Vector2) -> i64vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> i64vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.I64Vector2) -> i64vec2: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> i64vec2: ...
    @overload
    def __imul__(self, other: glm_typing.I64Vector2) -> i64vec2: ...

    def __mod__(self, other: Union[glm_typing.I64Vector2, glm_typing.Number]) -> i64vec2: ...
    def __rmod__(self, other: Union[glm_typing.I64Vector2, glm_typing.Number]) -> i64vec2: ...
    def __imod__(self, other: Union[glm_typing.I64Vector2, glm_typing.Number]) -> i64vec2: ...

    def __pow__(self, other: Union[glm_typing.I64Vector2, glm_typing.Number]) -> i64vec2: ...
    def __rpow__(self, other: Union[glm_typing.I64Vector2, glm_typing.Number]) -> i64vec2: ...
    def __ipow__(self, other: Union[glm_typing.I64Vector2, glm_typing.Number]) -> i64vec2: ...

    def __truediv__(self, other: Union[glm_typing.I64Vector2, glm_typing.Number]) -> i64vec2: ...
    def __rtruediv__(self, other: Union[glm_typing.I64Vector2, glm_typing.Number]) -> i64vec2: ...
    def __itruediv__(self, other: Union[glm_typing.I64Vector2, glm_typing.Number]) -> i64vec2: ...

    def __floordiv__(self, other: Union[glm_typing.I64Vector2, glm_typing.Number]) -> i64vec2: ...
    def __rfloordiv__(self, other: Union[glm_typing.I64Vector2, glm_typing.Number]) -> i64vec2: ...
    def __ifloordiv__(self, other: Union[glm_typing.I64Vector2, glm_typing.Number]) -> i64vec2: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> i64vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.I64Vector2) -> i64vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> i64vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I64Vector2) -> i64vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> i64vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.I64Vector2) -> i64vec2: ...

    def __divmod__(self, other: i64vec2) -> Tuple[i64vec2, i64vec2]: ...



class i64vec3:
    x: int
    y: int
    z: int


    @property
    def xy(self) -> i64vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.I64Vector2) -> None: ...

    @property
    def yx(self) -> i64vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.I64Vector2) -> None: ...

    @property
    def xz(self) -> i64vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.I64Vector2) -> None: ...

    @property
    def zx(self) -> i64vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.I64Vector2) -> None: ...

    @property
    def yz(self) -> i64vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.I64Vector2) -> None: ...

    @property
    def zy(self) -> i64vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.I64Vector2) -> None: ...

    @property
    def xyz(self) -> i64vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def xzy(self) -> i64vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def yxz(self) -> i64vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def yzx(self) -> i64vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def zxy(self) -> i64vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def zyx(self) -> i64vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.I64Vector3) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector3, glm_typing.IAnyVector4]) -> None: ...

    def __len__(self) -> Literal[3]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> i64vec3: ...
    def __pos__(self) -> i64vec3: ...
    def __abs__(self) -> i64vec3: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> i64vec3: ...

    def __add__(self, other: Union[glm_typing.I64Vector3, glm_typing.Number]) -> i64vec3: ...
    def __radd__(self, other: Union[glm_typing.I64Vector3, glm_typing.Number]) -> i64vec3: ...
    def __iadd__(self, other: Union[glm_typing.I64Vector3, glm_typing.Number]) -> i64vec3: ...

    def __sub__(self, other: Union[glm_typing.I64Vector3, glm_typing.Number]) -> i64vec3: ...
    def __rsub__(self, other: Union[glm_typing.I64Vector3, glm_typing.Number]) -> i64vec3: ...
    def __isub__(self, other: Union[glm_typing.I64Vector3, glm_typing.Number]) -> i64vec3: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> i64vec3: ...
    @overload
    def __mul__(self, other: glm_typing.I64Vector3) -> i64vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> i64vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.I64Vector3) -> i64vec3: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> i64vec3: ...
    @overload
    def __imul__(self, other: glm_typing.I64Vector3) -> i64vec3: ...

    def __mod__(self, other: Union[glm_typing.I64Vector3, glm_typing.Number]) -> i64vec3: ...
    def __rmod__(self, other: Union[glm_typing.I64Vector3, glm_typing.Number]) -> i64vec3: ...
    def __imod__(self, other: Union[glm_typing.I64Vector3, glm_typing.Number]) -> i64vec3: ...

    def __pow__(self, other: Union[glm_typing.I64Vector3, glm_typing.Number]) -> i64vec3: ...
    def __rpow__(self, other: Union[glm_typing.I64Vector3, glm_typing.Number]) -> i64vec3: ...
    def __ipow__(self, other: Union[glm_typing.I64Vector3, glm_typing.Number]) -> i64vec3: ...

    def __truediv__(self, other: Union[glm_typing.I64Vector3, glm_typing.Number]) -> i64vec3: ...
    def __rtruediv__(self, other: Union[glm_typing.I64Vector3, glm_typing.Number]) -> i64vec3: ...
    def __itruediv__(self, other: Union[glm_typing.I64Vector3, glm_typing.Number]) -> i64vec3: ...

    def __floordiv__(self, other: Union[glm_typing.I64Vector3, glm_typing.Number]) -> i64vec3: ...
    def __rfloordiv__(self, other: Union[glm_typing.I64Vector3, glm_typing.Number]) -> i64vec3: ...
    def __ifloordiv__(self, other: Union[glm_typing.I64Vector3, glm_typing.Number]) -> i64vec3: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> i64vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.I64Vector3) -> i64vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> i64vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I64Vector3) -> i64vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> i64vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.I64Vector3) -> i64vec3: ...

    def __divmod__(self, other: i64vec3) -> Tuple[i64vec3, i64vec3]: ...



class i64vec4:
    x: int
    y: int
    z: int
    w: int


    @property
    def xy(self) -> i64vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.I64Vector2) -> None: ...

    @property
    def yx(self) -> i64vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.I64Vector2) -> None: ...

    @property
    def xz(self) -> i64vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.I64Vector2) -> None: ...

    @property
    def zx(self) -> i64vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.I64Vector2) -> None: ...

    @property
    def xw(self) -> i64vec2: ...
    @xw.setter
    def xw(self, value: glm_typing.I64Vector2) -> None: ...

    @property
    def wx(self) -> i64vec2: ...
    @wx.setter
    def wx(self, value: glm_typing.I64Vector2) -> None: ...

    @property
    def yz(self) -> i64vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.I64Vector2) -> None: ...

    @property
    def zy(self) -> i64vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.I64Vector2) -> None: ...

    @property
    def yw(self) -> i64vec2: ...
    @yw.setter
    def yw(self, value: glm_typing.I64Vector2) -> None: ...

    @property
    def wy(self) -> i64vec2: ...
    @wy.setter
    def wy(self, value: glm_typing.I64Vector2) -> None: ...

    @property
    def zw(self) -> i64vec2: ...
    @zw.setter
    def zw(self, value: glm_typing.I64Vector2) -> None: ...

    @property
    def wz(self) -> i64vec2: ...
    @wz.setter
    def wz(self, value: glm_typing.I64Vector2) -> None: ...

    @property
    def xyz(self) -> i64vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def xzy(self) -> i64vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def yxz(self) -> i64vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def yzx(self) -> i64vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def zxy(self) -> i64vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def zyx(self) -> i64vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def xyw(self) -> i64vec3: ...
    @xyw.setter
    def xyw(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def xwy(self) -> i64vec3: ...
    @xwy.setter
    def xwy(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def yxw(self) -> i64vec3: ...
    @yxw.setter
    def yxw(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def ywx(self) -> i64vec3: ...
    @ywx.setter
    def ywx(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def wxy(self) -> i64vec3: ...
    @wxy.setter
    def wxy(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def wyx(self) -> i64vec3: ...
    @wyx.setter
    def wyx(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def xzw(self) -> i64vec3: ...
    @xzw.setter
    def xzw(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def xwz(self) -> i64vec3: ...
    @xwz.setter
    def xwz(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def zxw(self) -> i64vec3: ...
    @zxw.setter
    def zxw(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def zwx(self) -> i64vec3: ...
    @zwx.setter
    def zwx(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def wxz(self) -> i64vec3: ...
    @wxz.setter
    def wxz(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def wzx(self) -> i64vec3: ...
    @wzx.setter
    def wzx(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def yzw(self) -> i64vec3: ...
    @yzw.setter
    def yzw(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def ywz(self) -> i64vec3: ...
    @ywz.setter
    def ywz(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def zyw(self) -> i64vec3: ...
    @zyw.setter
    def zyw(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def zwy(self) -> i64vec3: ...
    @zwy.setter
    def zwy(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def wyz(self) -> i64vec3: ...
    @wyz.setter
    def wyz(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def wzy(self) -> i64vec3: ...
    @wzy.setter
    def wzy(self, value: glm_typing.I64Vector3) -> None: ...

    @property
    def xyzw(self) -> i64vec4: ...
    @xyzw.setter
    def xyzw(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def xywz(self) -> i64vec4: ...
    @xywz.setter
    def xywz(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def xzyw(self) -> i64vec4: ...
    @xzyw.setter
    def xzyw(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def xzwy(self) -> i64vec4: ...
    @xzwy.setter
    def xzwy(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def xwyz(self) -> i64vec4: ...
    @xwyz.setter
    def xwyz(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def xwzy(self) -> i64vec4: ...
    @xwzy.setter
    def xwzy(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def yxzw(self) -> i64vec4: ...
    @yxzw.setter
    def yxzw(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def yxwz(self) -> i64vec4: ...
    @yxwz.setter
    def yxwz(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def yzxw(self) -> i64vec4: ...
    @yzxw.setter
    def yzxw(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def yzwx(self) -> i64vec4: ...
    @yzwx.setter
    def yzwx(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def ywxz(self) -> i64vec4: ...
    @ywxz.setter
    def ywxz(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def ywzx(self) -> i64vec4: ...
    @ywzx.setter
    def ywzx(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def zxyw(self) -> i64vec4: ...
    @zxyw.setter
    def zxyw(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def zxwy(self) -> i64vec4: ...
    @zxwy.setter
    def zxwy(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def zyxw(self) -> i64vec4: ...
    @zyxw.setter
    def zyxw(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def zywx(self) -> i64vec4: ...
    @zywx.setter
    def zywx(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def zwxy(self) -> i64vec4: ...
    @zwxy.setter
    def zwxy(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def zwyx(self) -> i64vec4: ...
    @zwyx.setter
    def zwyx(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def wxyz(self) -> i64vec4: ...
    @wxyz.setter
    def wxyz(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def wxzy(self) -> i64vec4: ...
    @wxzy.setter
    def wxzy(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def wyxz(self) -> i64vec4: ...
    @wyxz.setter
    def wyxz(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def wyzx(self) -> i64vec4: ...
    @wyzx.setter
    def wyzx(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def wzxy(self) -> i64vec4: ...
    @wzxy.setter
    def wzxy(self, value: glm_typing.I64Vector4) -> None: ...

    @property
    def wzyx(self) -> i64vec4: ...
    @wzyx.setter
    def wzyx(self, value: glm_typing.I64Vector4) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number, w: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.AnyAnyVector4) -> None: ...

    def __len__(self) -> Literal[4]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> i64vec4: ...
    def __pos__(self) -> i64vec4: ...
    def __abs__(self) -> i64vec4: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int, int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> i64vec4: ...

    def __add__(self, other: Union[glm_typing.I64Vector4, glm_typing.Number]) -> i64vec4: ...
    def __radd__(self, other: Union[glm_typing.I64Vector4, glm_typing.Number]) -> i64vec4: ...
    def __iadd__(self, other: Union[glm_typing.I64Vector4, glm_typing.Number]) -> i64vec4: ...

    def __sub__(self, other: Union[glm_typing.I64Vector4, glm_typing.Number]) -> i64vec4: ...
    def __rsub__(self, other: Union[glm_typing.I64Vector4, glm_typing.Number]) -> i64vec4: ...
    def __isub__(self, other: Union[glm_typing.I64Vector4, glm_typing.Number]) -> i64vec4: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> i64vec4: ...
    @overload
    def __mul__(self, other: glm_typing.I64Vector4) -> i64vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> i64vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.I64Vector4) -> i64vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> i64vec4: ...
    @overload
    def __imul__(self, other: glm_typing.I64Vector4) -> i64vec4: ...

    def __mod__(self, other: Union[glm_typing.I64Vector4, glm_typing.Number]) -> i64vec4: ...
    def __rmod__(self, other: Union[glm_typing.I64Vector4, glm_typing.Number]) -> i64vec4: ...
    def __imod__(self, other: Union[glm_typing.I64Vector4, glm_typing.Number]) -> i64vec4: ...

    def __pow__(self, other: Union[glm_typing.I64Vector4, glm_typing.Number]) -> i64vec4: ...
    def __rpow__(self, other: Union[glm_typing.I64Vector4, glm_typing.Number]) -> i64vec4: ...
    def __ipow__(self, other: Union[glm_typing.I64Vector4, glm_typing.Number]) -> i64vec4: ...

    def __truediv__(self, other: Union[glm_typing.I64Vector4, glm_typing.Number]) -> i64vec4: ...
    def __rtruediv__(self, other: Union[glm_typing.I64Vector4, glm_typing.Number]) -> i64vec4: ...
    def __itruediv__(self, other: Union[glm_typing.I64Vector4, glm_typing.Number]) -> i64vec4: ...

    def __floordiv__(self, other: Union[glm_typing.I64Vector4, glm_typing.Number]) -> i64vec4: ...
    def __rfloordiv__(self, other: Union[glm_typing.I64Vector4, glm_typing.Number]) -> i64vec4: ...
    def __ifloordiv__(self, other: Union[glm_typing.I64Vector4, glm_typing.Number]) -> i64vec4: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> i64vec4: ...
    @overload
    def __matmul__(self, other: glm_typing.I64Vector4) -> i64vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> i64vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I64Vector4) -> i64vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> i64vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.I64Vector4) -> i64vec4: ...

    def __divmod__(self, other: i64vec4) -> Tuple[i64vec4, i64vec4]: ...



class i8vec1:
    x: int



    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector1, glm_typing.IAnyVector2, glm_typing.IAnyVector3, glm_typing.IAnyVector4]) -> None: ...

    def __len__(self) -> Literal[1]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> i8vec1: ...
    def __pos__(self) -> i8vec1: ...
    def __abs__(self) -> i8vec1: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> i8vec1: ...

    def __add__(self, other: Union[glm_typing.I8Vector1, glm_typing.Number]) -> i8vec1: ...
    def __radd__(self, other: Union[glm_typing.I8Vector1, glm_typing.Number]) -> i8vec1: ...
    def __iadd__(self, other: Union[glm_typing.I8Vector1, glm_typing.Number]) -> i8vec1: ...

    def __sub__(self, other: Union[glm_typing.I8Vector1, glm_typing.Number]) -> i8vec1: ...
    def __rsub__(self, other: Union[glm_typing.I8Vector1, glm_typing.Number]) -> i8vec1: ...
    def __isub__(self, other: Union[glm_typing.I8Vector1, glm_typing.Number]) -> i8vec1: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> i8vec1: ...
    @overload
    def __mul__(self, other: glm_typing.I8Vector1) -> i8vec1: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> i8vec1: ...
    @overload
    def __rmul__(self, other: glm_typing.I8Vector1) -> i8vec1: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> i8vec1: ...
    @overload
    def __imul__(self, other: glm_typing.I8Vector1) -> i8vec1: ...

    def __mod__(self, other: Union[glm_typing.I8Vector1, glm_typing.Number]) -> i8vec1: ...
    def __rmod__(self, other: Union[glm_typing.I8Vector1, glm_typing.Number]) -> i8vec1: ...
    def __imod__(self, other: Union[glm_typing.I8Vector1, glm_typing.Number]) -> i8vec1: ...

    def __pow__(self, other: Union[glm_typing.I8Vector1, glm_typing.Number]) -> i8vec1: ...
    def __rpow__(self, other: Union[glm_typing.I8Vector1, glm_typing.Number]) -> i8vec1: ...
    def __ipow__(self, other: Union[glm_typing.I8Vector1, glm_typing.Number]) -> i8vec1: ...

    def __truediv__(self, other: Union[glm_typing.I8Vector1, glm_typing.Number]) -> i8vec1: ...
    def __rtruediv__(self, other: Union[glm_typing.I8Vector1, glm_typing.Number]) -> i8vec1: ...
    def __itruediv__(self, other: Union[glm_typing.I8Vector1, glm_typing.Number]) -> i8vec1: ...

    def __floordiv__(self, other: Union[glm_typing.I8Vector1, glm_typing.Number]) -> i8vec1: ...
    def __rfloordiv__(self, other: Union[glm_typing.I8Vector1, glm_typing.Number]) -> i8vec1: ...
    def __ifloordiv__(self, other: Union[glm_typing.I8Vector1, glm_typing.Number]) -> i8vec1: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> i8vec1: ...
    @overload
    def __matmul__(self, other: glm_typing.I8Vector1) -> i8vec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> i8vec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I8Vector1) -> i8vec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> i8vec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.I8Vector1) -> i8vec1: ...

    def __divmod__(self, other: i8vec1) -> Tuple[i8vec1, i8vec1]: ...



class i8vec2:
    x: int
    y: int


    @property
    def xy(self) -> i8vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.I8Vector2) -> None: ...

    @property
    def yx(self) -> i8vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.I8Vector2) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector2, glm_typing.IAnyVector3, glm_typing.IAnyVector4]) -> None: ...

    def __len__(self) -> Literal[2]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> i8vec2: ...
    def __pos__(self) -> i8vec2: ...
    def __abs__(self) -> i8vec2: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> i8vec2: ...

    def __add__(self, other: Union[glm_typing.I8Vector2, glm_typing.Number]) -> i8vec2: ...
    def __radd__(self, other: Union[glm_typing.I8Vector2, glm_typing.Number]) -> i8vec2: ...
    def __iadd__(self, other: Union[glm_typing.I8Vector2, glm_typing.Number]) -> i8vec2: ...

    def __sub__(self, other: Union[glm_typing.I8Vector2, glm_typing.Number]) -> i8vec2: ...
    def __rsub__(self, other: Union[glm_typing.I8Vector2, glm_typing.Number]) -> i8vec2: ...
    def __isub__(self, other: Union[glm_typing.I8Vector2, glm_typing.Number]) -> i8vec2: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> i8vec2: ...
    @overload
    def __mul__(self, other: glm_typing.I8Vector2) -> i8vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> i8vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.I8Vector2) -> i8vec2: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> i8vec2: ...
    @overload
    def __imul__(self, other: glm_typing.I8Vector2) -> i8vec2: ...

    def __mod__(self, other: Union[glm_typing.I8Vector2, glm_typing.Number]) -> i8vec2: ...
    def __rmod__(self, other: Union[glm_typing.I8Vector2, glm_typing.Number]) -> i8vec2: ...
    def __imod__(self, other: Union[glm_typing.I8Vector2, glm_typing.Number]) -> i8vec2: ...

    def __pow__(self, other: Union[glm_typing.I8Vector2, glm_typing.Number]) -> i8vec2: ...
    def __rpow__(self, other: Union[glm_typing.I8Vector2, glm_typing.Number]) -> i8vec2: ...
    def __ipow__(self, other: Union[glm_typing.I8Vector2, glm_typing.Number]) -> i8vec2: ...

    def __truediv__(self, other: Union[glm_typing.I8Vector2, glm_typing.Number]) -> i8vec2: ...
    def __rtruediv__(self, other: Union[glm_typing.I8Vector2, glm_typing.Number]) -> i8vec2: ...
    def __itruediv__(self, other: Union[glm_typing.I8Vector2, glm_typing.Number]) -> i8vec2: ...

    def __floordiv__(self, other: Union[glm_typing.I8Vector2, glm_typing.Number]) -> i8vec2: ...
    def __rfloordiv__(self, other: Union[glm_typing.I8Vector2, glm_typing.Number]) -> i8vec2: ...
    def __ifloordiv__(self, other: Union[glm_typing.I8Vector2, glm_typing.Number]) -> i8vec2: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> i8vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.I8Vector2) -> i8vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> i8vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I8Vector2) -> i8vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> i8vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.I8Vector2) -> i8vec2: ...

    def __divmod__(self, other: i8vec2) -> Tuple[i8vec2, i8vec2]: ...



class i8vec3:
    x: int
    y: int
    z: int


    @property
    def xy(self) -> i8vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.I8Vector2) -> None: ...

    @property
    def yx(self) -> i8vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.I8Vector2) -> None: ...

    @property
    def xz(self) -> i8vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.I8Vector2) -> None: ...

    @property
    def zx(self) -> i8vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.I8Vector2) -> None: ...

    @property
    def yz(self) -> i8vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.I8Vector2) -> None: ...

    @property
    def zy(self) -> i8vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.I8Vector2) -> None: ...

    @property
    def xyz(self) -> i8vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def xzy(self) -> i8vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def yxz(self) -> i8vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def yzx(self) -> i8vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def zxy(self) -> i8vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def zyx(self) -> i8vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.I8Vector3) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector3, glm_typing.IAnyVector4]) -> None: ...

    def __len__(self) -> Literal[3]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> i8vec3: ...
    def __pos__(self) -> i8vec3: ...
    def __abs__(self) -> i8vec3: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> i8vec3: ...

    def __add__(self, other: Union[glm_typing.I8Vector3, glm_typing.Number]) -> i8vec3: ...
    def __radd__(self, other: Union[glm_typing.I8Vector3, glm_typing.Number]) -> i8vec3: ...
    def __iadd__(self, other: Union[glm_typing.I8Vector3, glm_typing.Number]) -> i8vec3: ...

    def __sub__(self, other: Union[glm_typing.I8Vector3, glm_typing.Number]) -> i8vec3: ...
    def __rsub__(self, other: Union[glm_typing.I8Vector3, glm_typing.Number]) -> i8vec3: ...
    def __isub__(self, other: Union[glm_typing.I8Vector3, glm_typing.Number]) -> i8vec3: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> i8vec3: ...
    @overload
    def __mul__(self, other: glm_typing.I8Vector3) -> i8vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> i8vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.I8Vector3) -> i8vec3: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> i8vec3: ...
    @overload
    def __imul__(self, other: glm_typing.I8Vector3) -> i8vec3: ...

    def __mod__(self, other: Union[glm_typing.I8Vector3, glm_typing.Number]) -> i8vec3: ...
    def __rmod__(self, other: Union[glm_typing.I8Vector3, glm_typing.Number]) -> i8vec3: ...
    def __imod__(self, other: Union[glm_typing.I8Vector3, glm_typing.Number]) -> i8vec3: ...

    def __pow__(self, other: Union[glm_typing.I8Vector3, glm_typing.Number]) -> i8vec3: ...
    def __rpow__(self, other: Union[glm_typing.I8Vector3, glm_typing.Number]) -> i8vec3: ...
    def __ipow__(self, other: Union[glm_typing.I8Vector3, glm_typing.Number]) -> i8vec3: ...

    def __truediv__(self, other: Union[glm_typing.I8Vector3, glm_typing.Number]) -> i8vec3: ...
    def __rtruediv__(self, other: Union[glm_typing.I8Vector3, glm_typing.Number]) -> i8vec3: ...
    def __itruediv__(self, other: Union[glm_typing.I8Vector3, glm_typing.Number]) -> i8vec3: ...

    def __floordiv__(self, other: Union[glm_typing.I8Vector3, glm_typing.Number]) -> i8vec3: ...
    def __rfloordiv__(self, other: Union[glm_typing.I8Vector3, glm_typing.Number]) -> i8vec3: ...
    def __ifloordiv__(self, other: Union[glm_typing.I8Vector3, glm_typing.Number]) -> i8vec3: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> i8vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.I8Vector3) -> i8vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> i8vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I8Vector3) -> i8vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> i8vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.I8Vector3) -> i8vec3: ...

    def __divmod__(self, other: i8vec3) -> Tuple[i8vec3, i8vec3]: ...



class i8vec4:
    x: int
    y: int
    z: int
    w: int


    @property
    def xy(self) -> i8vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.I8Vector2) -> None: ...

    @property
    def yx(self) -> i8vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.I8Vector2) -> None: ...

    @property
    def xz(self) -> i8vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.I8Vector2) -> None: ...

    @property
    def zx(self) -> i8vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.I8Vector2) -> None: ...

    @property
    def xw(self) -> i8vec2: ...
    @xw.setter
    def xw(self, value: glm_typing.I8Vector2) -> None: ...

    @property
    def wx(self) -> i8vec2: ...
    @wx.setter
    def wx(self, value: glm_typing.I8Vector2) -> None: ...

    @property
    def yz(self) -> i8vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.I8Vector2) -> None: ...

    @property
    def zy(self) -> i8vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.I8Vector2) -> None: ...

    @property
    def yw(self) -> i8vec2: ...
    @yw.setter
    def yw(self, value: glm_typing.I8Vector2) -> None: ...

    @property
    def wy(self) -> i8vec2: ...
    @wy.setter
    def wy(self, value: glm_typing.I8Vector2) -> None: ...

    @property
    def zw(self) -> i8vec2: ...
    @zw.setter
    def zw(self, value: glm_typing.I8Vector2) -> None: ...

    @property
    def wz(self) -> i8vec2: ...
    @wz.setter
    def wz(self, value: glm_typing.I8Vector2) -> None: ...

    @property
    def xyz(self) -> i8vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def xzy(self) -> i8vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def yxz(self) -> i8vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def yzx(self) -> i8vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def zxy(self) -> i8vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def zyx(self) -> i8vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def xyw(self) -> i8vec3: ...
    @xyw.setter
    def xyw(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def xwy(self) -> i8vec3: ...
    @xwy.setter
    def xwy(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def yxw(self) -> i8vec3: ...
    @yxw.setter
    def yxw(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def ywx(self) -> i8vec3: ...
    @ywx.setter
    def ywx(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def wxy(self) -> i8vec3: ...
    @wxy.setter
    def wxy(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def wyx(self) -> i8vec3: ...
    @wyx.setter
    def wyx(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def xzw(self) -> i8vec3: ...
    @xzw.setter
    def xzw(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def xwz(self) -> i8vec3: ...
    @xwz.setter
    def xwz(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def zxw(self) -> i8vec3: ...
    @zxw.setter
    def zxw(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def zwx(self) -> i8vec3: ...
    @zwx.setter
    def zwx(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def wxz(self) -> i8vec3: ...
    @wxz.setter
    def wxz(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def wzx(self) -> i8vec3: ...
    @wzx.setter
    def wzx(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def yzw(self) -> i8vec3: ...
    @yzw.setter
    def yzw(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def ywz(self) -> i8vec3: ...
    @ywz.setter
    def ywz(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def zyw(self) -> i8vec3: ...
    @zyw.setter
    def zyw(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def zwy(self) -> i8vec3: ...
    @zwy.setter
    def zwy(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def wyz(self) -> i8vec3: ...
    @wyz.setter
    def wyz(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def wzy(self) -> i8vec3: ...
    @wzy.setter
    def wzy(self, value: glm_typing.I8Vector3) -> None: ...

    @property
    def xyzw(self) -> i8vec4: ...
    @xyzw.setter
    def xyzw(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def xywz(self) -> i8vec4: ...
    @xywz.setter
    def xywz(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def xzyw(self) -> i8vec4: ...
    @xzyw.setter
    def xzyw(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def xzwy(self) -> i8vec4: ...
    @xzwy.setter
    def xzwy(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def xwyz(self) -> i8vec4: ...
    @xwyz.setter
    def xwyz(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def xwzy(self) -> i8vec4: ...
    @xwzy.setter
    def xwzy(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def yxzw(self) -> i8vec4: ...
    @yxzw.setter
    def yxzw(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def yxwz(self) -> i8vec4: ...
    @yxwz.setter
    def yxwz(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def yzxw(self) -> i8vec4: ...
    @yzxw.setter
    def yzxw(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def yzwx(self) -> i8vec4: ...
    @yzwx.setter
    def yzwx(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def ywxz(self) -> i8vec4: ...
    @ywxz.setter
    def ywxz(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def ywzx(self) -> i8vec4: ...
    @ywzx.setter
    def ywzx(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def zxyw(self) -> i8vec4: ...
    @zxyw.setter
    def zxyw(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def zxwy(self) -> i8vec4: ...
    @zxwy.setter
    def zxwy(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def zyxw(self) -> i8vec4: ...
    @zyxw.setter
    def zyxw(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def zywx(self) -> i8vec4: ...
    @zywx.setter
    def zywx(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def zwxy(self) -> i8vec4: ...
    @zwxy.setter
    def zwxy(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def zwyx(self) -> i8vec4: ...
    @zwyx.setter
    def zwyx(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def wxyz(self) -> i8vec4: ...
    @wxyz.setter
    def wxyz(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def wxzy(self) -> i8vec4: ...
    @wxzy.setter
    def wxzy(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def wyxz(self) -> i8vec4: ...
    @wyxz.setter
    def wyxz(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def wyzx(self) -> i8vec4: ...
    @wyzx.setter
    def wyzx(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def wzxy(self) -> i8vec4: ...
    @wzxy.setter
    def wzxy(self, value: glm_typing.I8Vector4) -> None: ...

    @property
    def wzyx(self) -> i8vec4: ...
    @wzyx.setter
    def wzyx(self, value: glm_typing.I8Vector4) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number, w: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.AnyAnyVector4) -> None: ...

    def __len__(self) -> Literal[4]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> i8vec4: ...
    def __pos__(self) -> i8vec4: ...
    def __abs__(self) -> i8vec4: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int, int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> i8vec4: ...

    def __add__(self, other: Union[glm_typing.I8Vector4, glm_typing.Number]) -> i8vec4: ...
    def __radd__(self, other: Union[glm_typing.I8Vector4, glm_typing.Number]) -> i8vec4: ...
    def __iadd__(self, other: Union[glm_typing.I8Vector4, glm_typing.Number]) -> i8vec4: ...

    def __sub__(self, other: Union[glm_typing.I8Vector4, glm_typing.Number]) -> i8vec4: ...
    def __rsub__(self, other: Union[glm_typing.I8Vector4, glm_typing.Number]) -> i8vec4: ...
    def __isub__(self, other: Union[glm_typing.I8Vector4, glm_typing.Number]) -> i8vec4: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> i8vec4: ...
    @overload
    def __mul__(self, other: glm_typing.I8Vector4) -> i8vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> i8vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.I8Vector4) -> i8vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> i8vec4: ...
    @overload
    def __imul__(self, other: glm_typing.I8Vector4) -> i8vec4: ...

    def __mod__(self, other: Union[glm_typing.I8Vector4, glm_typing.Number]) -> i8vec4: ...
    def __rmod__(self, other: Union[glm_typing.I8Vector4, glm_typing.Number]) -> i8vec4: ...
    def __imod__(self, other: Union[glm_typing.I8Vector4, glm_typing.Number]) -> i8vec4: ...

    def __pow__(self, other: Union[glm_typing.I8Vector4, glm_typing.Number]) -> i8vec4: ...
    def __rpow__(self, other: Union[glm_typing.I8Vector4, glm_typing.Number]) -> i8vec4: ...
    def __ipow__(self, other: Union[glm_typing.I8Vector4, glm_typing.Number]) -> i8vec4: ...

    def __truediv__(self, other: Union[glm_typing.I8Vector4, glm_typing.Number]) -> i8vec4: ...
    def __rtruediv__(self, other: Union[glm_typing.I8Vector4, glm_typing.Number]) -> i8vec4: ...
    def __itruediv__(self, other: Union[glm_typing.I8Vector4, glm_typing.Number]) -> i8vec4: ...

    def __floordiv__(self, other: Union[glm_typing.I8Vector4, glm_typing.Number]) -> i8vec4: ...
    def __rfloordiv__(self, other: Union[glm_typing.I8Vector4, glm_typing.Number]) -> i8vec4: ...
    def __ifloordiv__(self, other: Union[glm_typing.I8Vector4, glm_typing.Number]) -> i8vec4: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> i8vec4: ...
    @overload
    def __matmul__(self, other: glm_typing.I8Vector4) -> i8vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> i8vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I8Vector4) -> i8vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> i8vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.I8Vector4) -> i8vec4: ...

    def __divmod__(self, other: i8vec4) -> Tuple[i8vec4, i8vec4]: ...



class imvec2:
    x: int
    y: int


    @property
    def xy(self) -> i32vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def yx(self) -> i32vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.I32Vector2) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector2, glm_typing.IAnyVector3, glm_typing.IAnyVector4]) -> None: ...

    def __len__(self) -> Literal[2]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> imvec2: ...
    def __pos__(self) -> imvec2: ...
    def __abs__(self) -> imvec2: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> imvec2: ...

    def __add__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> imvec2: ...
    def __radd__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> imvec2: ...
    def __iadd__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> imvec2: ...

    def __sub__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> imvec2: ...
    def __rsub__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> imvec2: ...
    def __isub__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> imvec2: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> imvec2: ...
    @overload
    def __mul__(self, other: glm_typing.I32Vector2) -> imvec2: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> imvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Vector2) -> imvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> imvec2: ...
    @overload
    def __imul__(self, other: glm_typing.I32Vector2) -> imvec2: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> imvec2: ...
    def __rmod__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> imvec2: ...
    def __imod__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> imvec2: ...

    def __pow__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> imvec2: ...
    def __rpow__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> imvec2: ...
    def __ipow__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> imvec2: ...

    def __truediv__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> imvec2: ...
    def __rtruediv__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> imvec2: ...
    def __itruediv__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> imvec2: ...

    def __floordiv__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> imvec2: ...
    def __rfloordiv__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> imvec2: ...
    def __ifloordiv__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> imvec2: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> imvec2: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Vector2) -> imvec2: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> imvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Vector2) -> imvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> imvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Vector2) -> imvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: imvec2) -> Tuple[imvec2, imvec2]: ...



class imvec3:
    x: int
    y: int
    z: int


    @property
    def xy(self) -> i32vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def yx(self) -> i32vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def xz(self) -> i32vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def zx(self) -> i32vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def yz(self) -> i32vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def zy(self) -> i32vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def xyz(self) -> i32vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def xzy(self) -> i32vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def yxz(self) -> i32vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def yzx(self) -> i32vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def zxy(self) -> i32vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def zyx(self) -> i32vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.I32Vector3) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector3, glm_typing.IAnyVector4]) -> None: ...

    def __len__(self) -> Literal[3]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> imvec3: ...
    def __pos__(self) -> imvec3: ...
    def __abs__(self) -> imvec3: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> imvec3: ...

    def __add__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> imvec3: ...
    def __radd__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> imvec3: ...
    def __iadd__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> imvec3: ...

    def __sub__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> imvec3: ...
    def __rsub__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> imvec3: ...
    def __isub__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> imvec3: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> imvec3: ...
    @overload
    def __mul__(self, other: glm_typing.I32Vector3) -> imvec3: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> imvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Vector3) -> imvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> imvec3: ...
    @overload
    def __imul__(self, other: glm_typing.I32Vector3) -> imvec3: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> imvec3: ...
    def __rmod__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> imvec3: ...
    def __imod__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> imvec3: ...

    def __pow__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> imvec3: ...
    def __rpow__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> imvec3: ...
    def __ipow__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> imvec3: ...

    def __truediv__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> imvec3: ...
    def __rtruediv__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> imvec3: ...
    def __itruediv__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> imvec3: ...

    def __floordiv__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> imvec3: ...
    def __rfloordiv__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> imvec3: ...
    def __ifloordiv__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> imvec3: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> imvec3: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Vector3) -> imvec3: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> imvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Vector3) -> imvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> imvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Vector3) -> imvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: imvec3) -> Tuple[imvec3, imvec3]: ...



class imvec4:
    x: int
    y: int
    z: int
    w: int


    @property
    def xy(self) -> i32vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def yx(self) -> i32vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def xz(self) -> i32vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def zx(self) -> i32vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def xw(self) -> i32vec2: ...
    @xw.setter
    def xw(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def wx(self) -> i32vec2: ...
    @wx.setter
    def wx(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def yz(self) -> i32vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def zy(self) -> i32vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def yw(self) -> i32vec2: ...
    @yw.setter
    def yw(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def wy(self) -> i32vec2: ...
    @wy.setter
    def wy(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def zw(self) -> i32vec2: ...
    @zw.setter
    def zw(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def wz(self) -> i32vec2: ...
    @wz.setter
    def wz(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def xyz(self) -> i32vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def xzy(self) -> i32vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def yxz(self) -> i32vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def yzx(self) -> i32vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def zxy(self) -> i32vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def zyx(self) -> i32vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def xyw(self) -> i32vec3: ...
    @xyw.setter
    def xyw(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def xwy(self) -> i32vec3: ...
    @xwy.setter
    def xwy(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def yxw(self) -> i32vec3: ...
    @yxw.setter
    def yxw(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def ywx(self) -> i32vec3: ...
    @ywx.setter
    def ywx(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def wxy(self) -> i32vec3: ...
    @wxy.setter
    def wxy(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def wyx(self) -> i32vec3: ...
    @wyx.setter
    def wyx(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def xzw(self) -> i32vec3: ...
    @xzw.setter
    def xzw(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def xwz(self) -> i32vec3: ...
    @xwz.setter
    def xwz(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def zxw(self) -> i32vec3: ...
    @zxw.setter
    def zxw(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def zwx(self) -> i32vec3: ...
    @zwx.setter
    def zwx(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def wxz(self) -> i32vec3: ...
    @wxz.setter
    def wxz(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def wzx(self) -> i32vec3: ...
    @wzx.setter
    def wzx(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def yzw(self) -> i32vec3: ...
    @yzw.setter
    def yzw(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def ywz(self) -> i32vec3: ...
    @ywz.setter
    def ywz(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def zyw(self) -> i32vec3: ...
    @zyw.setter
    def zyw(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def zwy(self) -> i32vec3: ...
    @zwy.setter
    def zwy(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def wyz(self) -> i32vec3: ...
    @wyz.setter
    def wyz(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def wzy(self) -> i32vec3: ...
    @wzy.setter
    def wzy(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def xyzw(self) -> i32vec4: ...
    @xyzw.setter
    def xyzw(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def xywz(self) -> i32vec4: ...
    @xywz.setter
    def xywz(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def xzyw(self) -> i32vec4: ...
    @xzyw.setter
    def xzyw(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def xzwy(self) -> i32vec4: ...
    @xzwy.setter
    def xzwy(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def xwyz(self) -> i32vec4: ...
    @xwyz.setter
    def xwyz(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def xwzy(self) -> i32vec4: ...
    @xwzy.setter
    def xwzy(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def yxzw(self) -> i32vec4: ...
    @yxzw.setter
    def yxzw(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def yxwz(self) -> i32vec4: ...
    @yxwz.setter
    def yxwz(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def yzxw(self) -> i32vec4: ...
    @yzxw.setter
    def yzxw(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def yzwx(self) -> i32vec4: ...
    @yzwx.setter
    def yzwx(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def ywxz(self) -> i32vec4: ...
    @ywxz.setter
    def ywxz(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def ywzx(self) -> i32vec4: ...
    @ywzx.setter
    def ywzx(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def zxyw(self) -> i32vec4: ...
    @zxyw.setter
    def zxyw(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def zxwy(self) -> i32vec4: ...
    @zxwy.setter
    def zxwy(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def zyxw(self) -> i32vec4: ...
    @zyxw.setter
    def zyxw(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def zywx(self) -> i32vec4: ...
    @zywx.setter
    def zywx(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def zwxy(self) -> i32vec4: ...
    @zwxy.setter
    def zwxy(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def zwyx(self) -> i32vec4: ...
    @zwyx.setter
    def zwyx(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def wxyz(self) -> i32vec4: ...
    @wxyz.setter
    def wxyz(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def wxzy(self) -> i32vec4: ...
    @wxzy.setter
    def wxzy(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def wyxz(self) -> i32vec4: ...
    @wyxz.setter
    def wyxz(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def wyzx(self) -> i32vec4: ...
    @wyzx.setter
    def wyzx(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def wzxy(self) -> i32vec4: ...
    @wzxy.setter
    def wzxy(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def wzyx(self) -> i32vec4: ...
    @wzyx.setter
    def wzyx(self, value: glm_typing.I32Vector4) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number, w: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.AnyAnyVector4) -> None: ...

    def __len__(self) -> Literal[4]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> imvec4: ...
    def __pos__(self) -> imvec4: ...
    def __abs__(self) -> imvec4: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int, int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> imvec4: ...

    def __add__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> imvec4: ...
    def __radd__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> imvec4: ...
    def __iadd__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> imvec4: ...

    def __sub__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> imvec4: ...
    def __rsub__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> imvec4: ...
    def __isub__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> imvec4: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> imvec4: ...
    @overload
    def __mul__(self, other: glm_typing.I32Vector4) -> imvec4: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> imvec4: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Vector4) -> imvec4: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> imvec4: ...
    @overload
    def __imul__(self, other: glm_typing.I32Vector4) -> imvec4: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> imvec4: ...
    def __rmod__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> imvec4: ...
    def __imod__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> imvec4: ...

    def __pow__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> imvec4: ...
    def __rpow__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> imvec4: ...
    def __ipow__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> imvec4: ...

    def __truediv__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> imvec4: ...
    def __rtruediv__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> imvec4: ...
    def __itruediv__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> imvec4: ...

    def __floordiv__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> imvec4: ...
    def __rfloordiv__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> imvec4: ...
    def __ifloordiv__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> imvec4: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> imvec4: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Vector4) -> imvec4: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> imvec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Vector4) -> imvec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> imvec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Vector4) -> imvec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: imvec4) -> Tuple[imvec4, imvec4]: ...


i32vec1 = ivec1

class ivec1:
    x: int



    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector1, glm_typing.IAnyVector2, glm_typing.IAnyVector3, glm_typing.IAnyVector4]) -> None: ...

    def __len__(self) -> Literal[1]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> ivec1: ...
    def __pos__(self) -> ivec1: ...
    def __abs__(self) -> ivec1: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> ivec1: ...

    def __add__(self, other: Union[glm_typing.I32Vector1, glm_typing.Number]) -> ivec1: ...
    def __radd__(self, other: Union[glm_typing.I32Vector1, glm_typing.Number]) -> ivec1: ...
    def __iadd__(self, other: Union[glm_typing.I32Vector1, glm_typing.Number]) -> ivec1: ...

    def __sub__(self, other: Union[glm_typing.I32Vector1, glm_typing.Number]) -> ivec1: ...
    def __rsub__(self, other: Union[glm_typing.I32Vector1, glm_typing.Number]) -> ivec1: ...
    def __isub__(self, other: Union[glm_typing.I32Vector1, glm_typing.Number]) -> ivec1: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> ivec1: ...
    @overload
    def __mul__(self, other: glm_typing.I32Vector1) -> ivec1: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> ivec1: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Vector1) -> ivec1: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> ivec1: ...
    @overload
    def __imul__(self, other: glm_typing.I32Vector1) -> ivec1: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.I32Vector1, glm_typing.Number]) -> ivec1: ...
    def __rmod__(self, other: Union[glm_typing.I32Vector1, glm_typing.Number]) -> ivec1: ...
    def __imod__(self, other: Union[glm_typing.I32Vector1, glm_typing.Number]) -> ivec1: ...

    def __pow__(self, other: Union[glm_typing.I32Vector1, glm_typing.Number]) -> ivec1: ...
    def __rpow__(self, other: Union[glm_typing.I32Vector1, glm_typing.Number]) -> ivec1: ...
    def __ipow__(self, other: Union[glm_typing.I32Vector1, glm_typing.Number]) -> ivec1: ...

    def __truediv__(self, other: Union[glm_typing.I32Vector1, glm_typing.Number]) -> ivec1: ...
    def __rtruediv__(self, other: Union[glm_typing.I32Vector1, glm_typing.Number]) -> ivec1: ...
    def __itruediv__(self, other: Union[glm_typing.I32Vector1, glm_typing.Number]) -> ivec1: ...

    def __floordiv__(self, other: Union[glm_typing.I32Vector1, glm_typing.Number]) -> ivec1: ...
    def __rfloordiv__(self, other: Union[glm_typing.I32Vector1, glm_typing.Number]) -> ivec1: ...
    def __ifloordiv__(self, other: Union[glm_typing.I32Vector1, glm_typing.Number]) -> ivec1: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> ivec1: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Vector1) -> ivec1: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> ivec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Vector1) -> ivec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> ivec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Vector1) -> ivec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: ivec1) -> Tuple[ivec1, ivec1]: ...


i32vec2 = ivec2

class ivec2:
    x: int
    y: int


    @property
    def xy(self) -> i32vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def yx(self) -> i32vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.I32Vector2) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector2, glm_typing.IAnyVector3, glm_typing.IAnyVector4]) -> None: ...

    def __len__(self) -> Literal[2]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> ivec2: ...
    def __pos__(self) -> ivec2: ...
    def __abs__(self) -> ivec2: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> ivec2: ...

    def __add__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> ivec2: ...
    def __radd__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> ivec2: ...
    def __iadd__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> ivec2: ...

    def __sub__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> ivec2: ...
    def __rsub__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> ivec2: ...
    def __isub__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> ivec2: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> ivec2: ...
    @overload
    def __mul__(self, other: glm_typing.I32Vector2) -> ivec2: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> ivec2: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Vector2) -> ivec2: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> ivec2: ...
    @overload
    def __imul__(self, other: glm_typing.I32Vector2) -> ivec2: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> ivec2: ...
    def __rmod__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> ivec2: ...
    def __imod__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> ivec2: ...

    def __pow__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> ivec2: ...
    def __rpow__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> ivec2: ...
    def __ipow__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> ivec2: ...

    def __truediv__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> ivec2: ...
    def __rtruediv__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> ivec2: ...
    def __itruediv__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> ivec2: ...

    def __floordiv__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> ivec2: ...
    def __rfloordiv__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> ivec2: ...
    def __ifloordiv__(self, other: Union[glm_typing.I32Vector2, glm_typing.Number]) -> ivec2: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> ivec2: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Vector2) -> ivec2: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> ivec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Vector2) -> ivec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> ivec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Vector2) -> ivec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: ivec2) -> Tuple[ivec2, ivec2]: ...


i32vec3 = ivec3

class ivec3:
    x: int
    y: int
    z: int


    @property
    def xy(self) -> i32vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def yx(self) -> i32vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def xz(self) -> i32vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def zx(self) -> i32vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def yz(self) -> i32vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def zy(self) -> i32vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def xyz(self) -> i32vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def xzy(self) -> i32vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def yxz(self) -> i32vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def yzx(self) -> i32vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def zxy(self) -> i32vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def zyx(self) -> i32vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.I32Vector3) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector3, glm_typing.IAnyVector4]) -> None: ...

    def __len__(self) -> Literal[3]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> ivec3: ...
    def __pos__(self) -> ivec3: ...
    def __abs__(self) -> ivec3: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> ivec3: ...

    def __add__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> ivec3: ...
    def __radd__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> ivec3: ...
    def __iadd__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> ivec3: ...

    def __sub__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> ivec3: ...
    def __rsub__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> ivec3: ...
    def __isub__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> ivec3: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> ivec3: ...
    @overload
    def __mul__(self, other: glm_typing.I32Vector3) -> ivec3: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> ivec3: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Vector3) -> ivec3: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> ivec3: ...
    @overload
    def __imul__(self, other: glm_typing.I32Vector3) -> ivec3: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> ivec3: ...
    def __rmod__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> ivec3: ...
    def __imod__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> ivec3: ...

    def __pow__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> ivec3: ...
    def __rpow__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> ivec3: ...
    def __ipow__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> ivec3: ...

    def __truediv__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> ivec3: ...
    def __rtruediv__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> ivec3: ...
    def __itruediv__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> ivec3: ...

    def __floordiv__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> ivec3: ...
    def __rfloordiv__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> ivec3: ...
    def __ifloordiv__(self, other: Union[glm_typing.I32Vector3, glm_typing.Number]) -> ivec3: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> ivec3: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Vector3) -> ivec3: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> ivec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Vector3) -> ivec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> ivec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Vector3) -> ivec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: ivec3) -> Tuple[ivec3, ivec3]: ...


i32vec4 = ivec4

class ivec4:
    x: int
    y: int
    z: int
    w: int


    @property
    def xy(self) -> i32vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def yx(self) -> i32vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def xz(self) -> i32vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def zx(self) -> i32vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def xw(self) -> i32vec2: ...
    @xw.setter
    def xw(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def wx(self) -> i32vec2: ...
    @wx.setter
    def wx(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def yz(self) -> i32vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def zy(self) -> i32vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def yw(self) -> i32vec2: ...
    @yw.setter
    def yw(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def wy(self) -> i32vec2: ...
    @wy.setter
    def wy(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def zw(self) -> i32vec2: ...
    @zw.setter
    def zw(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def wz(self) -> i32vec2: ...
    @wz.setter
    def wz(self, value: glm_typing.I32Vector2) -> None: ...

    @property
    def xyz(self) -> i32vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def xzy(self) -> i32vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def yxz(self) -> i32vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def yzx(self) -> i32vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def zxy(self) -> i32vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def zyx(self) -> i32vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def xyw(self) -> i32vec3: ...
    @xyw.setter
    def xyw(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def xwy(self) -> i32vec3: ...
    @xwy.setter
    def xwy(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def yxw(self) -> i32vec3: ...
    @yxw.setter
    def yxw(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def ywx(self) -> i32vec3: ...
    @ywx.setter
    def ywx(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def wxy(self) -> i32vec3: ...
    @wxy.setter
    def wxy(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def wyx(self) -> i32vec3: ...
    @wyx.setter
    def wyx(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def xzw(self) -> i32vec3: ...
    @xzw.setter
    def xzw(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def xwz(self) -> i32vec3: ...
    @xwz.setter
    def xwz(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def zxw(self) -> i32vec3: ...
    @zxw.setter
    def zxw(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def zwx(self) -> i32vec3: ...
    @zwx.setter
    def zwx(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def wxz(self) -> i32vec3: ...
    @wxz.setter
    def wxz(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def wzx(self) -> i32vec3: ...
    @wzx.setter
    def wzx(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def yzw(self) -> i32vec3: ...
    @yzw.setter
    def yzw(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def ywz(self) -> i32vec3: ...
    @ywz.setter
    def ywz(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def zyw(self) -> i32vec3: ...
    @zyw.setter
    def zyw(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def zwy(self) -> i32vec3: ...
    @zwy.setter
    def zwy(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def wyz(self) -> i32vec3: ...
    @wyz.setter
    def wyz(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def wzy(self) -> i32vec3: ...
    @wzy.setter
    def wzy(self, value: glm_typing.I32Vector3) -> None: ...

    @property
    def xyzw(self) -> i32vec4: ...
    @xyzw.setter
    def xyzw(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def xywz(self) -> i32vec4: ...
    @xywz.setter
    def xywz(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def xzyw(self) -> i32vec4: ...
    @xzyw.setter
    def xzyw(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def xzwy(self) -> i32vec4: ...
    @xzwy.setter
    def xzwy(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def xwyz(self) -> i32vec4: ...
    @xwyz.setter
    def xwyz(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def xwzy(self) -> i32vec4: ...
    @xwzy.setter
    def xwzy(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def yxzw(self) -> i32vec4: ...
    @yxzw.setter
    def yxzw(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def yxwz(self) -> i32vec4: ...
    @yxwz.setter
    def yxwz(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def yzxw(self) -> i32vec4: ...
    @yzxw.setter
    def yzxw(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def yzwx(self) -> i32vec4: ...
    @yzwx.setter
    def yzwx(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def ywxz(self) -> i32vec4: ...
    @ywxz.setter
    def ywxz(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def ywzx(self) -> i32vec4: ...
    @ywzx.setter
    def ywzx(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def zxyw(self) -> i32vec4: ...
    @zxyw.setter
    def zxyw(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def zxwy(self) -> i32vec4: ...
    @zxwy.setter
    def zxwy(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def zyxw(self) -> i32vec4: ...
    @zyxw.setter
    def zyxw(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def zywx(self) -> i32vec4: ...
    @zywx.setter
    def zywx(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def zwxy(self) -> i32vec4: ...
    @zwxy.setter
    def zwxy(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def zwyx(self) -> i32vec4: ...
    @zwyx.setter
    def zwyx(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def wxyz(self) -> i32vec4: ...
    @wxyz.setter
    def wxyz(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def wxzy(self) -> i32vec4: ...
    @wxzy.setter
    def wxzy(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def wyxz(self) -> i32vec4: ...
    @wyxz.setter
    def wyxz(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def wyzx(self) -> i32vec4: ...
    @wyzx.setter
    def wyzx(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def wzxy(self) -> i32vec4: ...
    @wzxy.setter
    def wzxy(self, value: glm_typing.I32Vector4) -> None: ...

    @property
    def wzyx(self) -> i32vec4: ...
    @wzyx.setter
    def wzyx(self, value: glm_typing.I32Vector4) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number, w: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.AnyAnyVector4) -> None: ...

    def __len__(self) -> Literal[4]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> ivec4: ...
    def __pos__(self) -> ivec4: ...
    def __abs__(self) -> ivec4: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int, int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> ivec4: ...

    def __add__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> ivec4: ...
    def __radd__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> ivec4: ...
    def __iadd__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> ivec4: ...

    def __sub__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> ivec4: ...
    def __rsub__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> ivec4: ...
    def __isub__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> ivec4: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> ivec4: ...
    @overload
    def __mul__(self, other: glm_typing.I32Vector4) -> ivec4: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> ivec4: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Vector4) -> ivec4: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> ivec4: ...
    @overload
    def __imul__(self, other: glm_typing.I32Vector4) -> ivec4: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> ivec4: ...
    def __rmod__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> ivec4: ...
    def __imod__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> ivec4: ...

    def __pow__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> ivec4: ...
    def __rpow__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> ivec4: ...
    def __ipow__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> ivec4: ...

    def __truediv__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> ivec4: ...
    def __rtruediv__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> ivec4: ...
    def __itruediv__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> ivec4: ...

    def __floordiv__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> ivec4: ...
    def __rfloordiv__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> ivec4: ...
    def __ifloordiv__(self, other: Union[glm_typing.I32Vector4, glm_typing.Number]) -> ivec4: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> ivec4: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Vector4) -> ivec4: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> ivec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Vector4) -> ivec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> ivec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Vector4) -> ivec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: ivec4) -> Tuple[ivec4, ivec4]: ...



class mvec2:
    x: float
    y: float


    @property
    def xy(self) -> f32vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def yx(self) -> f32vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.F32Vector2) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector2, glm_typing.FAnyVector3, glm_typing.FAnyVector4]) -> None: ...

    def __len__(self) -> Literal[2]: ...
    def __getitem__(self, index: int) -> float: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[float, None, None]: ...

    def __neg__(self) -> mvec2: ...
    def __pos__(self) -> mvec2: ...
    def __abs__(self) -> mvec2: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[float]: ...
    def to_tuple(self) -> Tuple[float, float]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> mvec2: ...

    def __add__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> mvec2: ...
    def __radd__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> mvec2: ...
    def __iadd__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> mvec2: ...

    def __sub__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> mvec2: ...
    def __rsub__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> mvec2: ...
    def __isub__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> mvec2: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> mvec2: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector2) -> mvec2: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> mvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector2) -> mvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> mvec2: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector2) -> mvec2: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> mvec2: ...
    def __rmod__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> mvec2: ...
    def __imod__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> mvec2: ...

    def __pow__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> mvec2: ...
    def __rpow__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> mvec2: ...
    def __ipow__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> mvec2: ...

    def __truediv__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> mvec2: ...
    def __rtruediv__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> mvec2: ...
    def __itruediv__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> mvec2: ...

    def __floordiv__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> mvec2: ...
    def __rfloordiv__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> mvec2: ...
    def __ifloordiv__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> mvec2: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> mvec2: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector2) -> mvec2: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> mvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector2) -> mvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> mvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector2) -> mvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: mvec2) -> Tuple[mvec2, mvec2]: ...



class mvec3:
    x: float
    y: float
    z: float


    @property
    def xy(self) -> f32vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def yx(self) -> f32vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def xz(self) -> f32vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def zx(self) -> f32vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def yz(self) -> f32vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def zy(self) -> f32vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def xyz(self) -> f32vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def xzy(self) -> f32vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def yxz(self) -> f32vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def yzx(self) -> f32vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def zxy(self) -> f32vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def zyx(self) -> f32vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.F32Vector3) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector3, glm_typing.FAnyVector4]) -> None: ...

    def __len__(self) -> Literal[3]: ...
    def __getitem__(self, index: int) -> float: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[float, None, None]: ...

    def __neg__(self) -> mvec3: ...
    def __pos__(self) -> mvec3: ...
    def __abs__(self) -> mvec3: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[float]: ...
    def to_tuple(self) -> Tuple[float, float, float]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> mvec3: ...

    def __add__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> mvec3: ...
    def __radd__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> mvec3: ...
    def __iadd__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> mvec3: ...

    def __sub__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> mvec3: ...
    def __rsub__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> mvec3: ...
    def __isub__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> mvec3: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> mvec3: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector3) -> mvec3: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> mvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector3) -> mvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> mvec3: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector3) -> mvec3: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> mvec3: ...
    def __rmod__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> mvec3: ...
    def __imod__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> mvec3: ...

    def __pow__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> mvec3: ...
    def __rpow__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> mvec3: ...
    def __ipow__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> mvec3: ...

    def __truediv__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> mvec3: ...
    def __rtruediv__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> mvec3: ...
    def __itruediv__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> mvec3: ...

    def __floordiv__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> mvec3: ...
    def __rfloordiv__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> mvec3: ...
    def __ifloordiv__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> mvec3: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> mvec3: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector3) -> mvec3: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> mvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector3) -> mvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> mvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector3) -> mvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: mvec3) -> Tuple[mvec3, mvec3]: ...



class mvec4:
    x: float
    y: float
    z: float
    w: float


    @property
    def xy(self) -> f32vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def yx(self) -> f32vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def xz(self) -> f32vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def zx(self) -> f32vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def xw(self) -> f32vec2: ...
    @xw.setter
    def xw(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def wx(self) -> f32vec2: ...
    @wx.setter
    def wx(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def yz(self) -> f32vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def zy(self) -> f32vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def yw(self) -> f32vec2: ...
    @yw.setter
    def yw(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def wy(self) -> f32vec2: ...
    @wy.setter
    def wy(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def zw(self) -> f32vec2: ...
    @zw.setter
    def zw(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def wz(self) -> f32vec2: ...
    @wz.setter
    def wz(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def xyz(self) -> f32vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def xzy(self) -> f32vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def yxz(self) -> f32vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def yzx(self) -> f32vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def zxy(self) -> f32vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def zyx(self) -> f32vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def xyw(self) -> f32vec3: ...
    @xyw.setter
    def xyw(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def xwy(self) -> f32vec3: ...
    @xwy.setter
    def xwy(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def yxw(self) -> f32vec3: ...
    @yxw.setter
    def yxw(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def ywx(self) -> f32vec3: ...
    @ywx.setter
    def ywx(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def wxy(self) -> f32vec3: ...
    @wxy.setter
    def wxy(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def wyx(self) -> f32vec3: ...
    @wyx.setter
    def wyx(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def xzw(self) -> f32vec3: ...
    @xzw.setter
    def xzw(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def xwz(self) -> f32vec3: ...
    @xwz.setter
    def xwz(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def zxw(self) -> f32vec3: ...
    @zxw.setter
    def zxw(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def zwx(self) -> f32vec3: ...
    @zwx.setter
    def zwx(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def wxz(self) -> f32vec3: ...
    @wxz.setter
    def wxz(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def wzx(self) -> f32vec3: ...
    @wzx.setter
    def wzx(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def yzw(self) -> f32vec3: ...
    @yzw.setter
    def yzw(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def ywz(self) -> f32vec3: ...
    @ywz.setter
    def ywz(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def zyw(self) -> f32vec3: ...
    @zyw.setter
    def zyw(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def zwy(self) -> f32vec3: ...
    @zwy.setter
    def zwy(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def wyz(self) -> f32vec3: ...
    @wyz.setter
    def wyz(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def wzy(self) -> f32vec3: ...
    @wzy.setter
    def wzy(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def xyzw(self) -> f32vec4: ...
    @xyzw.setter
    def xyzw(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def xywz(self) -> f32vec4: ...
    @xywz.setter
    def xywz(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def xzyw(self) -> f32vec4: ...
    @xzyw.setter
    def xzyw(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def xzwy(self) -> f32vec4: ...
    @xzwy.setter
    def xzwy(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def xwyz(self) -> f32vec4: ...
    @xwyz.setter
    def xwyz(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def xwzy(self) -> f32vec4: ...
    @xwzy.setter
    def xwzy(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def yxzw(self) -> f32vec4: ...
    @yxzw.setter
    def yxzw(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def yxwz(self) -> f32vec4: ...
    @yxwz.setter
    def yxwz(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def yzxw(self) -> f32vec4: ...
    @yzxw.setter
    def yzxw(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def yzwx(self) -> f32vec4: ...
    @yzwx.setter
    def yzwx(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def ywxz(self) -> f32vec4: ...
    @ywxz.setter
    def ywxz(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def ywzx(self) -> f32vec4: ...
    @ywzx.setter
    def ywzx(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def zxyw(self) -> f32vec4: ...
    @zxyw.setter
    def zxyw(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def zxwy(self) -> f32vec4: ...
    @zxwy.setter
    def zxwy(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def zyxw(self) -> f32vec4: ...
    @zyxw.setter
    def zyxw(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def zywx(self) -> f32vec4: ...
    @zywx.setter
    def zywx(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def zwxy(self) -> f32vec4: ...
    @zwxy.setter
    def zwxy(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def zwyx(self) -> f32vec4: ...
    @zwyx.setter
    def zwyx(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def wxyz(self) -> f32vec4: ...
    @wxyz.setter
    def wxyz(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def wxzy(self) -> f32vec4: ...
    @wxzy.setter
    def wxzy(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def wyxz(self) -> f32vec4: ...
    @wyxz.setter
    def wyxz(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def wyzx(self) -> f32vec4: ...
    @wyzx.setter
    def wyzx(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def wzxy(self) -> f32vec4: ...
    @wzxy.setter
    def wzxy(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def wzyx(self) -> f32vec4: ...
    @wzyx.setter
    def wzyx(self, value: glm_typing.F32Vector4) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number, w: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.AnyAnyVector4) -> None: ...

    def __len__(self) -> Literal[4]: ...
    def __getitem__(self, index: int) -> float: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[float, None, None]: ...

    def __neg__(self) -> mvec4: ...
    def __pos__(self) -> mvec4: ...
    def __abs__(self) -> mvec4: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[float]: ...
    def to_tuple(self) -> Tuple[float, float, float, float]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> mvec4: ...

    def __add__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> mvec4: ...
    def __radd__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> mvec4: ...
    def __iadd__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> mvec4: ...

    def __sub__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> mvec4: ...
    def __rsub__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> mvec4: ...
    def __isub__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> mvec4: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> mvec4: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector4) -> mvec4: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> mvec4: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector4) -> mvec4: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> mvec4: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector4) -> mvec4: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> mvec4: ...
    def __rmod__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> mvec4: ...
    def __imod__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> mvec4: ...

    def __pow__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> mvec4: ...
    def __rpow__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> mvec4: ...
    def __ipow__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> mvec4: ...

    def __truediv__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> mvec4: ...
    def __rtruediv__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> mvec4: ...
    def __itruediv__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> mvec4: ...

    def __floordiv__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> mvec4: ...
    def __rfloordiv__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> mvec4: ...
    def __ifloordiv__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> mvec4: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> mvec4: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector4) -> mvec4: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> mvec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector4) -> mvec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> mvec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector4) -> mvec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: mvec4) -> Tuple[mvec4, mvec4]: ...



class u16vec1:
    x: int



    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector1, glm_typing.UAnyVector2, glm_typing.UAnyVector3, glm_typing.UAnyVector4]) -> None: ...

    def __len__(self) -> Literal[1]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> u16vec1: ...
    def __pos__(self) -> u16vec1: ...
    def __abs__(self) -> u16vec1: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> u16vec1: ...

    def __add__(self, other: Union[glm_typing.U16Vector1, glm_typing.Number]) -> u16vec1: ...
    def __radd__(self, other: Union[glm_typing.U16Vector1, glm_typing.Number]) -> u16vec1: ...
    def __iadd__(self, other: Union[glm_typing.U16Vector1, glm_typing.Number]) -> u16vec1: ...

    def __sub__(self, other: Union[glm_typing.U16Vector1, glm_typing.Number]) -> u16vec1: ...
    def __rsub__(self, other: Union[glm_typing.U16Vector1, glm_typing.Number]) -> u16vec1: ...
    def __isub__(self, other: Union[glm_typing.U16Vector1, glm_typing.Number]) -> u16vec1: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> u16vec1: ...
    @overload
    def __mul__(self, other: glm_typing.U16Vector1) -> u16vec1: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> u16vec1: ...
    @overload
    def __rmul__(self, other: glm_typing.U16Vector1) -> u16vec1: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> u16vec1: ...
    @overload
    def __imul__(self, other: glm_typing.U16Vector1) -> u16vec1: ...

    def __mod__(self, other: Union[glm_typing.U16Vector1, glm_typing.Number]) -> u16vec1: ...
    def __rmod__(self, other: Union[glm_typing.U16Vector1, glm_typing.Number]) -> u16vec1: ...
    def __imod__(self, other: Union[glm_typing.U16Vector1, glm_typing.Number]) -> u16vec1: ...

    def __pow__(self, other: Union[glm_typing.U16Vector1, glm_typing.Number]) -> u16vec1: ...
    def __rpow__(self, other: Union[glm_typing.U16Vector1, glm_typing.Number]) -> u16vec1: ...
    def __ipow__(self, other: Union[glm_typing.U16Vector1, glm_typing.Number]) -> u16vec1: ...

    def __truediv__(self, other: Union[glm_typing.U16Vector1, glm_typing.Number]) -> u16vec1: ...
    def __rtruediv__(self, other: Union[glm_typing.U16Vector1, glm_typing.Number]) -> u16vec1: ...
    def __itruediv__(self, other: Union[glm_typing.U16Vector1, glm_typing.Number]) -> u16vec1: ...

    def __floordiv__(self, other: Union[glm_typing.U16Vector1, glm_typing.Number]) -> u16vec1: ...
    def __rfloordiv__(self, other: Union[glm_typing.U16Vector1, glm_typing.Number]) -> u16vec1: ...
    def __ifloordiv__(self, other: Union[glm_typing.U16Vector1, glm_typing.Number]) -> u16vec1: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> u16vec1: ...
    @overload
    def __matmul__(self, other: glm_typing.U16Vector1) -> u16vec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> u16vec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U16Vector1) -> u16vec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> u16vec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.U16Vector1) -> u16vec1: ...

    def __divmod__(self, other: u16vec1) -> Tuple[u16vec1, u16vec1]: ...



class u16vec2:
    x: int
    y: int


    @property
    def xy(self) -> u16vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.U16Vector2) -> None: ...

    @property
    def yx(self) -> u16vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.U16Vector2) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector2, glm_typing.UAnyVector3, glm_typing.UAnyVector4]) -> None: ...

    def __len__(self) -> Literal[2]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> u16vec2: ...
    def __pos__(self) -> u16vec2: ...
    def __abs__(self) -> u16vec2: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> u16vec2: ...

    def __add__(self, other: Union[glm_typing.U16Vector2, glm_typing.Number]) -> u16vec2: ...
    def __radd__(self, other: Union[glm_typing.U16Vector2, glm_typing.Number]) -> u16vec2: ...
    def __iadd__(self, other: Union[glm_typing.U16Vector2, glm_typing.Number]) -> u16vec2: ...

    def __sub__(self, other: Union[glm_typing.U16Vector2, glm_typing.Number]) -> u16vec2: ...
    def __rsub__(self, other: Union[glm_typing.U16Vector2, glm_typing.Number]) -> u16vec2: ...
    def __isub__(self, other: Union[glm_typing.U16Vector2, glm_typing.Number]) -> u16vec2: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> u16vec2: ...
    @overload
    def __mul__(self, other: glm_typing.U16Vector2) -> u16vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> u16vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.U16Vector2) -> u16vec2: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> u16vec2: ...
    @overload
    def __imul__(self, other: glm_typing.U16Vector2) -> u16vec2: ...

    def __mod__(self, other: Union[glm_typing.U16Vector2, glm_typing.Number]) -> u16vec2: ...
    def __rmod__(self, other: Union[glm_typing.U16Vector2, glm_typing.Number]) -> u16vec2: ...
    def __imod__(self, other: Union[glm_typing.U16Vector2, glm_typing.Number]) -> u16vec2: ...

    def __pow__(self, other: Union[glm_typing.U16Vector2, glm_typing.Number]) -> u16vec2: ...
    def __rpow__(self, other: Union[glm_typing.U16Vector2, glm_typing.Number]) -> u16vec2: ...
    def __ipow__(self, other: Union[glm_typing.U16Vector2, glm_typing.Number]) -> u16vec2: ...

    def __truediv__(self, other: Union[glm_typing.U16Vector2, glm_typing.Number]) -> u16vec2: ...
    def __rtruediv__(self, other: Union[glm_typing.U16Vector2, glm_typing.Number]) -> u16vec2: ...
    def __itruediv__(self, other: Union[glm_typing.U16Vector2, glm_typing.Number]) -> u16vec2: ...

    def __floordiv__(self, other: Union[glm_typing.U16Vector2, glm_typing.Number]) -> u16vec2: ...
    def __rfloordiv__(self, other: Union[glm_typing.U16Vector2, glm_typing.Number]) -> u16vec2: ...
    def __ifloordiv__(self, other: Union[glm_typing.U16Vector2, glm_typing.Number]) -> u16vec2: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> u16vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.U16Vector2) -> u16vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> u16vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U16Vector2) -> u16vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> u16vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.U16Vector2) -> u16vec2: ...

    def __divmod__(self, other: u16vec2) -> Tuple[u16vec2, u16vec2]: ...



class u16vec3:
    x: int
    y: int
    z: int


    @property
    def xy(self) -> u16vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.U16Vector2) -> None: ...

    @property
    def yx(self) -> u16vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.U16Vector2) -> None: ...

    @property
    def xz(self) -> u16vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.U16Vector2) -> None: ...

    @property
    def zx(self) -> u16vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.U16Vector2) -> None: ...

    @property
    def yz(self) -> u16vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.U16Vector2) -> None: ...

    @property
    def zy(self) -> u16vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.U16Vector2) -> None: ...

    @property
    def xyz(self) -> u16vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def xzy(self) -> u16vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def yxz(self) -> u16vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def yzx(self) -> u16vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def zxy(self) -> u16vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def zyx(self) -> u16vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.U16Vector3) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector3, glm_typing.UAnyVector4]) -> None: ...

    def __len__(self) -> Literal[3]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> u16vec3: ...
    def __pos__(self) -> u16vec3: ...
    def __abs__(self) -> u16vec3: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> u16vec3: ...

    def __add__(self, other: Union[glm_typing.U16Vector3, glm_typing.Number]) -> u16vec3: ...
    def __radd__(self, other: Union[glm_typing.U16Vector3, glm_typing.Number]) -> u16vec3: ...
    def __iadd__(self, other: Union[glm_typing.U16Vector3, glm_typing.Number]) -> u16vec3: ...

    def __sub__(self, other: Union[glm_typing.U16Vector3, glm_typing.Number]) -> u16vec3: ...
    def __rsub__(self, other: Union[glm_typing.U16Vector3, glm_typing.Number]) -> u16vec3: ...
    def __isub__(self, other: Union[glm_typing.U16Vector3, glm_typing.Number]) -> u16vec3: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> u16vec3: ...
    @overload
    def __mul__(self, other: glm_typing.U16Vector3) -> u16vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> u16vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.U16Vector3) -> u16vec3: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> u16vec3: ...
    @overload
    def __imul__(self, other: glm_typing.U16Vector3) -> u16vec3: ...

    def __mod__(self, other: Union[glm_typing.U16Vector3, glm_typing.Number]) -> u16vec3: ...
    def __rmod__(self, other: Union[glm_typing.U16Vector3, glm_typing.Number]) -> u16vec3: ...
    def __imod__(self, other: Union[glm_typing.U16Vector3, glm_typing.Number]) -> u16vec3: ...

    def __pow__(self, other: Union[glm_typing.U16Vector3, glm_typing.Number]) -> u16vec3: ...
    def __rpow__(self, other: Union[glm_typing.U16Vector3, glm_typing.Number]) -> u16vec3: ...
    def __ipow__(self, other: Union[glm_typing.U16Vector3, glm_typing.Number]) -> u16vec3: ...

    def __truediv__(self, other: Union[glm_typing.U16Vector3, glm_typing.Number]) -> u16vec3: ...
    def __rtruediv__(self, other: Union[glm_typing.U16Vector3, glm_typing.Number]) -> u16vec3: ...
    def __itruediv__(self, other: Union[glm_typing.U16Vector3, glm_typing.Number]) -> u16vec3: ...

    def __floordiv__(self, other: Union[glm_typing.U16Vector3, glm_typing.Number]) -> u16vec3: ...
    def __rfloordiv__(self, other: Union[glm_typing.U16Vector3, glm_typing.Number]) -> u16vec3: ...
    def __ifloordiv__(self, other: Union[glm_typing.U16Vector3, glm_typing.Number]) -> u16vec3: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> u16vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.U16Vector3) -> u16vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> u16vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U16Vector3) -> u16vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> u16vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.U16Vector3) -> u16vec3: ...

    def __divmod__(self, other: u16vec3) -> Tuple[u16vec3, u16vec3]: ...



class u16vec4:
    x: int
    y: int
    z: int
    w: int


    @property
    def xy(self) -> u16vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.U16Vector2) -> None: ...

    @property
    def yx(self) -> u16vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.U16Vector2) -> None: ...

    @property
    def xz(self) -> u16vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.U16Vector2) -> None: ...

    @property
    def zx(self) -> u16vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.U16Vector2) -> None: ...

    @property
    def xw(self) -> u16vec2: ...
    @xw.setter
    def xw(self, value: glm_typing.U16Vector2) -> None: ...

    @property
    def wx(self) -> u16vec2: ...
    @wx.setter
    def wx(self, value: glm_typing.U16Vector2) -> None: ...

    @property
    def yz(self) -> u16vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.U16Vector2) -> None: ...

    @property
    def zy(self) -> u16vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.U16Vector2) -> None: ...

    @property
    def yw(self) -> u16vec2: ...
    @yw.setter
    def yw(self, value: glm_typing.U16Vector2) -> None: ...

    @property
    def wy(self) -> u16vec2: ...
    @wy.setter
    def wy(self, value: glm_typing.U16Vector2) -> None: ...

    @property
    def zw(self) -> u16vec2: ...
    @zw.setter
    def zw(self, value: glm_typing.U16Vector2) -> None: ...

    @property
    def wz(self) -> u16vec2: ...
    @wz.setter
    def wz(self, value: glm_typing.U16Vector2) -> None: ...

    @property
    def xyz(self) -> u16vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def xzy(self) -> u16vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def yxz(self) -> u16vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def yzx(self) -> u16vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def zxy(self) -> u16vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def zyx(self) -> u16vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def xyw(self) -> u16vec3: ...
    @xyw.setter
    def xyw(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def xwy(self) -> u16vec3: ...
    @xwy.setter
    def xwy(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def yxw(self) -> u16vec3: ...
    @yxw.setter
    def yxw(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def ywx(self) -> u16vec3: ...
    @ywx.setter
    def ywx(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def wxy(self) -> u16vec3: ...
    @wxy.setter
    def wxy(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def wyx(self) -> u16vec3: ...
    @wyx.setter
    def wyx(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def xzw(self) -> u16vec3: ...
    @xzw.setter
    def xzw(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def xwz(self) -> u16vec3: ...
    @xwz.setter
    def xwz(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def zxw(self) -> u16vec3: ...
    @zxw.setter
    def zxw(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def zwx(self) -> u16vec3: ...
    @zwx.setter
    def zwx(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def wxz(self) -> u16vec3: ...
    @wxz.setter
    def wxz(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def wzx(self) -> u16vec3: ...
    @wzx.setter
    def wzx(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def yzw(self) -> u16vec3: ...
    @yzw.setter
    def yzw(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def ywz(self) -> u16vec3: ...
    @ywz.setter
    def ywz(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def zyw(self) -> u16vec3: ...
    @zyw.setter
    def zyw(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def zwy(self) -> u16vec3: ...
    @zwy.setter
    def zwy(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def wyz(self) -> u16vec3: ...
    @wyz.setter
    def wyz(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def wzy(self) -> u16vec3: ...
    @wzy.setter
    def wzy(self, value: glm_typing.U16Vector3) -> None: ...

    @property
    def xyzw(self) -> u16vec4: ...
    @xyzw.setter
    def xyzw(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def xywz(self) -> u16vec4: ...
    @xywz.setter
    def xywz(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def xzyw(self) -> u16vec4: ...
    @xzyw.setter
    def xzyw(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def xzwy(self) -> u16vec4: ...
    @xzwy.setter
    def xzwy(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def xwyz(self) -> u16vec4: ...
    @xwyz.setter
    def xwyz(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def xwzy(self) -> u16vec4: ...
    @xwzy.setter
    def xwzy(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def yxzw(self) -> u16vec4: ...
    @yxzw.setter
    def yxzw(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def yxwz(self) -> u16vec4: ...
    @yxwz.setter
    def yxwz(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def yzxw(self) -> u16vec4: ...
    @yzxw.setter
    def yzxw(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def yzwx(self) -> u16vec4: ...
    @yzwx.setter
    def yzwx(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def ywxz(self) -> u16vec4: ...
    @ywxz.setter
    def ywxz(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def ywzx(self) -> u16vec4: ...
    @ywzx.setter
    def ywzx(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def zxyw(self) -> u16vec4: ...
    @zxyw.setter
    def zxyw(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def zxwy(self) -> u16vec4: ...
    @zxwy.setter
    def zxwy(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def zyxw(self) -> u16vec4: ...
    @zyxw.setter
    def zyxw(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def zywx(self) -> u16vec4: ...
    @zywx.setter
    def zywx(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def zwxy(self) -> u16vec4: ...
    @zwxy.setter
    def zwxy(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def zwyx(self) -> u16vec4: ...
    @zwyx.setter
    def zwyx(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def wxyz(self) -> u16vec4: ...
    @wxyz.setter
    def wxyz(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def wxzy(self) -> u16vec4: ...
    @wxzy.setter
    def wxzy(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def wyxz(self) -> u16vec4: ...
    @wyxz.setter
    def wyxz(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def wyzx(self) -> u16vec4: ...
    @wyzx.setter
    def wyzx(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def wzxy(self) -> u16vec4: ...
    @wzxy.setter
    def wzxy(self, value: glm_typing.U16Vector4) -> None: ...

    @property
    def wzyx(self) -> u16vec4: ...
    @wzyx.setter
    def wzyx(self, value: glm_typing.U16Vector4) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number, w: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.AnyAnyVector4) -> None: ...

    def __len__(self) -> Literal[4]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> u16vec4: ...
    def __pos__(self) -> u16vec4: ...
    def __abs__(self) -> u16vec4: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int, int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> u16vec4: ...

    def __add__(self, other: Union[glm_typing.U16Vector4, glm_typing.Number]) -> u16vec4: ...
    def __radd__(self, other: Union[glm_typing.U16Vector4, glm_typing.Number]) -> u16vec4: ...
    def __iadd__(self, other: Union[glm_typing.U16Vector4, glm_typing.Number]) -> u16vec4: ...

    def __sub__(self, other: Union[glm_typing.U16Vector4, glm_typing.Number]) -> u16vec4: ...
    def __rsub__(self, other: Union[glm_typing.U16Vector4, glm_typing.Number]) -> u16vec4: ...
    def __isub__(self, other: Union[glm_typing.U16Vector4, glm_typing.Number]) -> u16vec4: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> u16vec4: ...
    @overload
    def __mul__(self, other: glm_typing.U16Vector4) -> u16vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> u16vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.U16Vector4) -> u16vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> u16vec4: ...
    @overload
    def __imul__(self, other: glm_typing.U16Vector4) -> u16vec4: ...

    def __mod__(self, other: Union[glm_typing.U16Vector4, glm_typing.Number]) -> u16vec4: ...
    def __rmod__(self, other: Union[glm_typing.U16Vector4, glm_typing.Number]) -> u16vec4: ...
    def __imod__(self, other: Union[glm_typing.U16Vector4, glm_typing.Number]) -> u16vec4: ...

    def __pow__(self, other: Union[glm_typing.U16Vector4, glm_typing.Number]) -> u16vec4: ...
    def __rpow__(self, other: Union[glm_typing.U16Vector4, glm_typing.Number]) -> u16vec4: ...
    def __ipow__(self, other: Union[glm_typing.U16Vector4, glm_typing.Number]) -> u16vec4: ...

    def __truediv__(self, other: Union[glm_typing.U16Vector4, glm_typing.Number]) -> u16vec4: ...
    def __rtruediv__(self, other: Union[glm_typing.U16Vector4, glm_typing.Number]) -> u16vec4: ...
    def __itruediv__(self, other: Union[glm_typing.U16Vector4, glm_typing.Number]) -> u16vec4: ...

    def __floordiv__(self, other: Union[glm_typing.U16Vector4, glm_typing.Number]) -> u16vec4: ...
    def __rfloordiv__(self, other: Union[glm_typing.U16Vector4, glm_typing.Number]) -> u16vec4: ...
    def __ifloordiv__(self, other: Union[glm_typing.U16Vector4, glm_typing.Number]) -> u16vec4: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> u16vec4: ...
    @overload
    def __matmul__(self, other: glm_typing.U16Vector4) -> u16vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> u16vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U16Vector4) -> u16vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> u16vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.U16Vector4) -> u16vec4: ...

    def __divmod__(self, other: u16vec4) -> Tuple[u16vec4, u16vec4]: ...



class u64vec1:
    x: int



    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector1, glm_typing.UAnyVector2, glm_typing.UAnyVector3, glm_typing.UAnyVector4]) -> None: ...

    def __len__(self) -> Literal[1]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> u64vec1: ...
    def __pos__(self) -> u64vec1: ...
    def __abs__(self) -> u64vec1: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> u64vec1: ...

    def __add__(self, other: Union[glm_typing.U64Vector1, glm_typing.Number]) -> u64vec1: ...
    def __radd__(self, other: Union[glm_typing.U64Vector1, glm_typing.Number]) -> u64vec1: ...
    def __iadd__(self, other: Union[glm_typing.U64Vector1, glm_typing.Number]) -> u64vec1: ...

    def __sub__(self, other: Union[glm_typing.U64Vector1, glm_typing.Number]) -> u64vec1: ...
    def __rsub__(self, other: Union[glm_typing.U64Vector1, glm_typing.Number]) -> u64vec1: ...
    def __isub__(self, other: Union[glm_typing.U64Vector1, glm_typing.Number]) -> u64vec1: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> u64vec1: ...
    @overload
    def __mul__(self, other: glm_typing.U64Vector1) -> u64vec1: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> u64vec1: ...
    @overload
    def __rmul__(self, other: glm_typing.U64Vector1) -> u64vec1: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> u64vec1: ...
    @overload
    def __imul__(self, other: glm_typing.U64Vector1) -> u64vec1: ...

    def __mod__(self, other: Union[glm_typing.U64Vector1, glm_typing.Number]) -> u64vec1: ...
    def __rmod__(self, other: Union[glm_typing.U64Vector1, glm_typing.Number]) -> u64vec1: ...
    def __imod__(self, other: Union[glm_typing.U64Vector1, glm_typing.Number]) -> u64vec1: ...

    def __pow__(self, other: Union[glm_typing.U64Vector1, glm_typing.Number]) -> u64vec1: ...
    def __rpow__(self, other: Union[glm_typing.U64Vector1, glm_typing.Number]) -> u64vec1: ...
    def __ipow__(self, other: Union[glm_typing.U64Vector1, glm_typing.Number]) -> u64vec1: ...

    def __truediv__(self, other: Union[glm_typing.U64Vector1, glm_typing.Number]) -> u64vec1: ...
    def __rtruediv__(self, other: Union[glm_typing.U64Vector1, glm_typing.Number]) -> u64vec1: ...
    def __itruediv__(self, other: Union[glm_typing.U64Vector1, glm_typing.Number]) -> u64vec1: ...

    def __floordiv__(self, other: Union[glm_typing.U64Vector1, glm_typing.Number]) -> u64vec1: ...
    def __rfloordiv__(self, other: Union[glm_typing.U64Vector1, glm_typing.Number]) -> u64vec1: ...
    def __ifloordiv__(self, other: Union[glm_typing.U64Vector1, glm_typing.Number]) -> u64vec1: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> u64vec1: ...
    @overload
    def __matmul__(self, other: glm_typing.U64Vector1) -> u64vec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> u64vec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U64Vector1) -> u64vec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> u64vec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.U64Vector1) -> u64vec1: ...

    def __divmod__(self, other: u64vec1) -> Tuple[u64vec1, u64vec1]: ...



class u64vec2:
    x: int
    y: int


    @property
    def xy(self) -> u64vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.U64Vector2) -> None: ...

    @property
    def yx(self) -> u64vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.U64Vector2) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector2, glm_typing.UAnyVector3, glm_typing.UAnyVector4]) -> None: ...

    def __len__(self) -> Literal[2]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> u64vec2: ...
    def __pos__(self) -> u64vec2: ...
    def __abs__(self) -> u64vec2: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> u64vec2: ...

    def __add__(self, other: Union[glm_typing.U64Vector2, glm_typing.Number]) -> u64vec2: ...
    def __radd__(self, other: Union[glm_typing.U64Vector2, glm_typing.Number]) -> u64vec2: ...
    def __iadd__(self, other: Union[glm_typing.U64Vector2, glm_typing.Number]) -> u64vec2: ...

    def __sub__(self, other: Union[glm_typing.U64Vector2, glm_typing.Number]) -> u64vec2: ...
    def __rsub__(self, other: Union[glm_typing.U64Vector2, glm_typing.Number]) -> u64vec2: ...
    def __isub__(self, other: Union[glm_typing.U64Vector2, glm_typing.Number]) -> u64vec2: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> u64vec2: ...
    @overload
    def __mul__(self, other: glm_typing.U64Vector2) -> u64vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> u64vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.U64Vector2) -> u64vec2: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> u64vec2: ...
    @overload
    def __imul__(self, other: glm_typing.U64Vector2) -> u64vec2: ...

    def __mod__(self, other: Union[glm_typing.U64Vector2, glm_typing.Number]) -> u64vec2: ...
    def __rmod__(self, other: Union[glm_typing.U64Vector2, glm_typing.Number]) -> u64vec2: ...
    def __imod__(self, other: Union[glm_typing.U64Vector2, glm_typing.Number]) -> u64vec2: ...

    def __pow__(self, other: Union[glm_typing.U64Vector2, glm_typing.Number]) -> u64vec2: ...
    def __rpow__(self, other: Union[glm_typing.U64Vector2, glm_typing.Number]) -> u64vec2: ...
    def __ipow__(self, other: Union[glm_typing.U64Vector2, glm_typing.Number]) -> u64vec2: ...

    def __truediv__(self, other: Union[glm_typing.U64Vector2, glm_typing.Number]) -> u64vec2: ...
    def __rtruediv__(self, other: Union[glm_typing.U64Vector2, glm_typing.Number]) -> u64vec2: ...
    def __itruediv__(self, other: Union[glm_typing.U64Vector2, glm_typing.Number]) -> u64vec2: ...

    def __floordiv__(self, other: Union[glm_typing.U64Vector2, glm_typing.Number]) -> u64vec2: ...
    def __rfloordiv__(self, other: Union[glm_typing.U64Vector2, glm_typing.Number]) -> u64vec2: ...
    def __ifloordiv__(self, other: Union[glm_typing.U64Vector2, glm_typing.Number]) -> u64vec2: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> u64vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.U64Vector2) -> u64vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> u64vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U64Vector2) -> u64vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> u64vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.U64Vector2) -> u64vec2: ...

    def __divmod__(self, other: u64vec2) -> Tuple[u64vec2, u64vec2]: ...



class u64vec3:
    x: int
    y: int
    z: int


    @property
    def xy(self) -> u64vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.U64Vector2) -> None: ...

    @property
    def yx(self) -> u64vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.U64Vector2) -> None: ...

    @property
    def xz(self) -> u64vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.U64Vector2) -> None: ...

    @property
    def zx(self) -> u64vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.U64Vector2) -> None: ...

    @property
    def yz(self) -> u64vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.U64Vector2) -> None: ...

    @property
    def zy(self) -> u64vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.U64Vector2) -> None: ...

    @property
    def xyz(self) -> u64vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def xzy(self) -> u64vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def yxz(self) -> u64vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def yzx(self) -> u64vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def zxy(self) -> u64vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def zyx(self) -> u64vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.U64Vector3) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector3, glm_typing.UAnyVector4]) -> None: ...

    def __len__(self) -> Literal[3]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> u64vec3: ...
    def __pos__(self) -> u64vec3: ...
    def __abs__(self) -> u64vec3: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> u64vec3: ...

    def __add__(self, other: Union[glm_typing.U64Vector3, glm_typing.Number]) -> u64vec3: ...
    def __radd__(self, other: Union[glm_typing.U64Vector3, glm_typing.Number]) -> u64vec3: ...
    def __iadd__(self, other: Union[glm_typing.U64Vector3, glm_typing.Number]) -> u64vec3: ...

    def __sub__(self, other: Union[glm_typing.U64Vector3, glm_typing.Number]) -> u64vec3: ...
    def __rsub__(self, other: Union[glm_typing.U64Vector3, glm_typing.Number]) -> u64vec3: ...
    def __isub__(self, other: Union[glm_typing.U64Vector3, glm_typing.Number]) -> u64vec3: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> u64vec3: ...
    @overload
    def __mul__(self, other: glm_typing.U64Vector3) -> u64vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> u64vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.U64Vector3) -> u64vec3: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> u64vec3: ...
    @overload
    def __imul__(self, other: glm_typing.U64Vector3) -> u64vec3: ...

    def __mod__(self, other: Union[glm_typing.U64Vector3, glm_typing.Number]) -> u64vec3: ...
    def __rmod__(self, other: Union[glm_typing.U64Vector3, glm_typing.Number]) -> u64vec3: ...
    def __imod__(self, other: Union[glm_typing.U64Vector3, glm_typing.Number]) -> u64vec3: ...

    def __pow__(self, other: Union[glm_typing.U64Vector3, glm_typing.Number]) -> u64vec3: ...
    def __rpow__(self, other: Union[glm_typing.U64Vector3, glm_typing.Number]) -> u64vec3: ...
    def __ipow__(self, other: Union[glm_typing.U64Vector3, glm_typing.Number]) -> u64vec3: ...

    def __truediv__(self, other: Union[glm_typing.U64Vector3, glm_typing.Number]) -> u64vec3: ...
    def __rtruediv__(self, other: Union[glm_typing.U64Vector3, glm_typing.Number]) -> u64vec3: ...
    def __itruediv__(self, other: Union[glm_typing.U64Vector3, glm_typing.Number]) -> u64vec3: ...

    def __floordiv__(self, other: Union[glm_typing.U64Vector3, glm_typing.Number]) -> u64vec3: ...
    def __rfloordiv__(self, other: Union[glm_typing.U64Vector3, glm_typing.Number]) -> u64vec3: ...
    def __ifloordiv__(self, other: Union[glm_typing.U64Vector3, glm_typing.Number]) -> u64vec3: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> u64vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.U64Vector3) -> u64vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> u64vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U64Vector3) -> u64vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> u64vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.U64Vector3) -> u64vec3: ...

    def __divmod__(self, other: u64vec3) -> Tuple[u64vec3, u64vec3]: ...



class u64vec4:
    x: int
    y: int
    z: int
    w: int


    @property
    def xy(self) -> u64vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.U64Vector2) -> None: ...

    @property
    def yx(self) -> u64vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.U64Vector2) -> None: ...

    @property
    def xz(self) -> u64vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.U64Vector2) -> None: ...

    @property
    def zx(self) -> u64vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.U64Vector2) -> None: ...

    @property
    def xw(self) -> u64vec2: ...
    @xw.setter
    def xw(self, value: glm_typing.U64Vector2) -> None: ...

    @property
    def wx(self) -> u64vec2: ...
    @wx.setter
    def wx(self, value: glm_typing.U64Vector2) -> None: ...

    @property
    def yz(self) -> u64vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.U64Vector2) -> None: ...

    @property
    def zy(self) -> u64vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.U64Vector2) -> None: ...

    @property
    def yw(self) -> u64vec2: ...
    @yw.setter
    def yw(self, value: glm_typing.U64Vector2) -> None: ...

    @property
    def wy(self) -> u64vec2: ...
    @wy.setter
    def wy(self, value: glm_typing.U64Vector2) -> None: ...

    @property
    def zw(self) -> u64vec2: ...
    @zw.setter
    def zw(self, value: glm_typing.U64Vector2) -> None: ...

    @property
    def wz(self) -> u64vec2: ...
    @wz.setter
    def wz(self, value: glm_typing.U64Vector2) -> None: ...

    @property
    def xyz(self) -> u64vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def xzy(self) -> u64vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def yxz(self) -> u64vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def yzx(self) -> u64vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def zxy(self) -> u64vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def zyx(self) -> u64vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def xyw(self) -> u64vec3: ...
    @xyw.setter
    def xyw(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def xwy(self) -> u64vec3: ...
    @xwy.setter
    def xwy(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def yxw(self) -> u64vec3: ...
    @yxw.setter
    def yxw(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def ywx(self) -> u64vec3: ...
    @ywx.setter
    def ywx(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def wxy(self) -> u64vec3: ...
    @wxy.setter
    def wxy(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def wyx(self) -> u64vec3: ...
    @wyx.setter
    def wyx(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def xzw(self) -> u64vec3: ...
    @xzw.setter
    def xzw(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def xwz(self) -> u64vec3: ...
    @xwz.setter
    def xwz(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def zxw(self) -> u64vec3: ...
    @zxw.setter
    def zxw(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def zwx(self) -> u64vec3: ...
    @zwx.setter
    def zwx(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def wxz(self) -> u64vec3: ...
    @wxz.setter
    def wxz(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def wzx(self) -> u64vec3: ...
    @wzx.setter
    def wzx(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def yzw(self) -> u64vec3: ...
    @yzw.setter
    def yzw(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def ywz(self) -> u64vec3: ...
    @ywz.setter
    def ywz(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def zyw(self) -> u64vec3: ...
    @zyw.setter
    def zyw(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def zwy(self) -> u64vec3: ...
    @zwy.setter
    def zwy(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def wyz(self) -> u64vec3: ...
    @wyz.setter
    def wyz(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def wzy(self) -> u64vec3: ...
    @wzy.setter
    def wzy(self, value: glm_typing.U64Vector3) -> None: ...

    @property
    def xyzw(self) -> u64vec4: ...
    @xyzw.setter
    def xyzw(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def xywz(self) -> u64vec4: ...
    @xywz.setter
    def xywz(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def xzyw(self) -> u64vec4: ...
    @xzyw.setter
    def xzyw(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def xzwy(self) -> u64vec4: ...
    @xzwy.setter
    def xzwy(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def xwyz(self) -> u64vec4: ...
    @xwyz.setter
    def xwyz(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def xwzy(self) -> u64vec4: ...
    @xwzy.setter
    def xwzy(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def yxzw(self) -> u64vec4: ...
    @yxzw.setter
    def yxzw(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def yxwz(self) -> u64vec4: ...
    @yxwz.setter
    def yxwz(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def yzxw(self) -> u64vec4: ...
    @yzxw.setter
    def yzxw(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def yzwx(self) -> u64vec4: ...
    @yzwx.setter
    def yzwx(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def ywxz(self) -> u64vec4: ...
    @ywxz.setter
    def ywxz(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def ywzx(self) -> u64vec4: ...
    @ywzx.setter
    def ywzx(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def zxyw(self) -> u64vec4: ...
    @zxyw.setter
    def zxyw(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def zxwy(self) -> u64vec4: ...
    @zxwy.setter
    def zxwy(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def zyxw(self) -> u64vec4: ...
    @zyxw.setter
    def zyxw(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def zywx(self) -> u64vec4: ...
    @zywx.setter
    def zywx(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def zwxy(self) -> u64vec4: ...
    @zwxy.setter
    def zwxy(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def zwyx(self) -> u64vec4: ...
    @zwyx.setter
    def zwyx(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def wxyz(self) -> u64vec4: ...
    @wxyz.setter
    def wxyz(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def wxzy(self) -> u64vec4: ...
    @wxzy.setter
    def wxzy(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def wyxz(self) -> u64vec4: ...
    @wyxz.setter
    def wyxz(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def wyzx(self) -> u64vec4: ...
    @wyzx.setter
    def wyzx(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def wzxy(self) -> u64vec4: ...
    @wzxy.setter
    def wzxy(self, value: glm_typing.U64Vector4) -> None: ...

    @property
    def wzyx(self) -> u64vec4: ...
    @wzyx.setter
    def wzyx(self, value: glm_typing.U64Vector4) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number, w: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.AnyAnyVector4) -> None: ...

    def __len__(self) -> Literal[4]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> u64vec4: ...
    def __pos__(self) -> u64vec4: ...
    def __abs__(self) -> u64vec4: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int, int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> u64vec4: ...

    def __add__(self, other: Union[glm_typing.U64Vector4, glm_typing.Number]) -> u64vec4: ...
    def __radd__(self, other: Union[glm_typing.U64Vector4, glm_typing.Number]) -> u64vec4: ...
    def __iadd__(self, other: Union[glm_typing.U64Vector4, glm_typing.Number]) -> u64vec4: ...

    def __sub__(self, other: Union[glm_typing.U64Vector4, glm_typing.Number]) -> u64vec4: ...
    def __rsub__(self, other: Union[glm_typing.U64Vector4, glm_typing.Number]) -> u64vec4: ...
    def __isub__(self, other: Union[glm_typing.U64Vector4, glm_typing.Number]) -> u64vec4: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> u64vec4: ...
    @overload
    def __mul__(self, other: glm_typing.U64Vector4) -> u64vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> u64vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.U64Vector4) -> u64vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> u64vec4: ...
    @overload
    def __imul__(self, other: glm_typing.U64Vector4) -> u64vec4: ...

    def __mod__(self, other: Union[glm_typing.U64Vector4, glm_typing.Number]) -> u64vec4: ...
    def __rmod__(self, other: Union[glm_typing.U64Vector4, glm_typing.Number]) -> u64vec4: ...
    def __imod__(self, other: Union[glm_typing.U64Vector4, glm_typing.Number]) -> u64vec4: ...

    def __pow__(self, other: Union[glm_typing.U64Vector4, glm_typing.Number]) -> u64vec4: ...
    def __rpow__(self, other: Union[glm_typing.U64Vector4, glm_typing.Number]) -> u64vec4: ...
    def __ipow__(self, other: Union[glm_typing.U64Vector4, glm_typing.Number]) -> u64vec4: ...

    def __truediv__(self, other: Union[glm_typing.U64Vector4, glm_typing.Number]) -> u64vec4: ...
    def __rtruediv__(self, other: Union[glm_typing.U64Vector4, glm_typing.Number]) -> u64vec4: ...
    def __itruediv__(self, other: Union[glm_typing.U64Vector4, glm_typing.Number]) -> u64vec4: ...

    def __floordiv__(self, other: Union[glm_typing.U64Vector4, glm_typing.Number]) -> u64vec4: ...
    def __rfloordiv__(self, other: Union[glm_typing.U64Vector4, glm_typing.Number]) -> u64vec4: ...
    def __ifloordiv__(self, other: Union[glm_typing.U64Vector4, glm_typing.Number]) -> u64vec4: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> u64vec4: ...
    @overload
    def __matmul__(self, other: glm_typing.U64Vector4) -> u64vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> u64vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U64Vector4) -> u64vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> u64vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.U64Vector4) -> u64vec4: ...

    def __divmod__(self, other: u64vec4) -> Tuple[u64vec4, u64vec4]: ...



class u8vec1:
    x: int



    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector1, glm_typing.UAnyVector2, glm_typing.UAnyVector3, glm_typing.UAnyVector4]) -> None: ...

    def __len__(self) -> Literal[1]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> u8vec1: ...
    def __pos__(self) -> u8vec1: ...
    def __abs__(self) -> u8vec1: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> u8vec1: ...

    def __add__(self, other: Union[glm_typing.U8Vector1, glm_typing.Number]) -> u8vec1: ...
    def __radd__(self, other: Union[glm_typing.U8Vector1, glm_typing.Number]) -> u8vec1: ...
    def __iadd__(self, other: Union[glm_typing.U8Vector1, glm_typing.Number]) -> u8vec1: ...

    def __sub__(self, other: Union[glm_typing.U8Vector1, glm_typing.Number]) -> u8vec1: ...
    def __rsub__(self, other: Union[glm_typing.U8Vector1, glm_typing.Number]) -> u8vec1: ...
    def __isub__(self, other: Union[glm_typing.U8Vector1, glm_typing.Number]) -> u8vec1: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> u8vec1: ...
    @overload
    def __mul__(self, other: glm_typing.U8Vector1) -> u8vec1: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> u8vec1: ...
    @overload
    def __rmul__(self, other: glm_typing.U8Vector1) -> u8vec1: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> u8vec1: ...
    @overload
    def __imul__(self, other: glm_typing.U8Vector1) -> u8vec1: ...

    def __mod__(self, other: Union[glm_typing.U8Vector1, glm_typing.Number]) -> u8vec1: ...
    def __rmod__(self, other: Union[glm_typing.U8Vector1, glm_typing.Number]) -> u8vec1: ...
    def __imod__(self, other: Union[glm_typing.U8Vector1, glm_typing.Number]) -> u8vec1: ...

    def __pow__(self, other: Union[glm_typing.U8Vector1, glm_typing.Number]) -> u8vec1: ...
    def __rpow__(self, other: Union[glm_typing.U8Vector1, glm_typing.Number]) -> u8vec1: ...
    def __ipow__(self, other: Union[glm_typing.U8Vector1, glm_typing.Number]) -> u8vec1: ...

    def __truediv__(self, other: Union[glm_typing.U8Vector1, glm_typing.Number]) -> u8vec1: ...
    def __rtruediv__(self, other: Union[glm_typing.U8Vector1, glm_typing.Number]) -> u8vec1: ...
    def __itruediv__(self, other: Union[glm_typing.U8Vector1, glm_typing.Number]) -> u8vec1: ...

    def __floordiv__(self, other: Union[glm_typing.U8Vector1, glm_typing.Number]) -> u8vec1: ...
    def __rfloordiv__(self, other: Union[glm_typing.U8Vector1, glm_typing.Number]) -> u8vec1: ...
    def __ifloordiv__(self, other: Union[glm_typing.U8Vector1, glm_typing.Number]) -> u8vec1: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> u8vec1: ...
    @overload
    def __matmul__(self, other: glm_typing.U8Vector1) -> u8vec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> u8vec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U8Vector1) -> u8vec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> u8vec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.U8Vector1) -> u8vec1: ...

    def __divmod__(self, other: u8vec1) -> Tuple[u8vec1, u8vec1]: ...



class u8vec2:
    x: int
    y: int


    @property
    def xy(self) -> u8vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.U8Vector2) -> None: ...

    @property
    def yx(self) -> u8vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.U8Vector2) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector2, glm_typing.UAnyVector3, glm_typing.UAnyVector4]) -> None: ...

    def __len__(self) -> Literal[2]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> u8vec2: ...
    def __pos__(self) -> u8vec2: ...
    def __abs__(self) -> u8vec2: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> u8vec2: ...

    def __add__(self, other: Union[glm_typing.U8Vector2, glm_typing.Number]) -> u8vec2: ...
    def __radd__(self, other: Union[glm_typing.U8Vector2, glm_typing.Number]) -> u8vec2: ...
    def __iadd__(self, other: Union[glm_typing.U8Vector2, glm_typing.Number]) -> u8vec2: ...

    def __sub__(self, other: Union[glm_typing.U8Vector2, glm_typing.Number]) -> u8vec2: ...
    def __rsub__(self, other: Union[glm_typing.U8Vector2, glm_typing.Number]) -> u8vec2: ...
    def __isub__(self, other: Union[glm_typing.U8Vector2, glm_typing.Number]) -> u8vec2: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> u8vec2: ...
    @overload
    def __mul__(self, other: glm_typing.U8Vector2) -> u8vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> u8vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.U8Vector2) -> u8vec2: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> u8vec2: ...
    @overload
    def __imul__(self, other: glm_typing.U8Vector2) -> u8vec2: ...

    def __mod__(self, other: Union[glm_typing.U8Vector2, glm_typing.Number]) -> u8vec2: ...
    def __rmod__(self, other: Union[glm_typing.U8Vector2, glm_typing.Number]) -> u8vec2: ...
    def __imod__(self, other: Union[glm_typing.U8Vector2, glm_typing.Number]) -> u8vec2: ...

    def __pow__(self, other: Union[glm_typing.U8Vector2, glm_typing.Number]) -> u8vec2: ...
    def __rpow__(self, other: Union[glm_typing.U8Vector2, glm_typing.Number]) -> u8vec2: ...
    def __ipow__(self, other: Union[glm_typing.U8Vector2, glm_typing.Number]) -> u8vec2: ...

    def __truediv__(self, other: Union[glm_typing.U8Vector2, glm_typing.Number]) -> u8vec2: ...
    def __rtruediv__(self, other: Union[glm_typing.U8Vector2, glm_typing.Number]) -> u8vec2: ...
    def __itruediv__(self, other: Union[glm_typing.U8Vector2, glm_typing.Number]) -> u8vec2: ...

    def __floordiv__(self, other: Union[glm_typing.U8Vector2, glm_typing.Number]) -> u8vec2: ...
    def __rfloordiv__(self, other: Union[glm_typing.U8Vector2, glm_typing.Number]) -> u8vec2: ...
    def __ifloordiv__(self, other: Union[glm_typing.U8Vector2, glm_typing.Number]) -> u8vec2: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> u8vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.U8Vector2) -> u8vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> u8vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U8Vector2) -> u8vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> u8vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.U8Vector2) -> u8vec2: ...

    def __divmod__(self, other: u8vec2) -> Tuple[u8vec2, u8vec2]: ...



class u8vec3:
    x: int
    y: int
    z: int


    @property
    def xy(self) -> u8vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.U8Vector2) -> None: ...

    @property
    def yx(self) -> u8vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.U8Vector2) -> None: ...

    @property
    def xz(self) -> u8vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.U8Vector2) -> None: ...

    @property
    def zx(self) -> u8vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.U8Vector2) -> None: ...

    @property
    def yz(self) -> u8vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.U8Vector2) -> None: ...

    @property
    def zy(self) -> u8vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.U8Vector2) -> None: ...

    @property
    def xyz(self) -> u8vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def xzy(self) -> u8vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def yxz(self) -> u8vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def yzx(self) -> u8vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def zxy(self) -> u8vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def zyx(self) -> u8vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.U8Vector3) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector3, glm_typing.UAnyVector4]) -> None: ...

    def __len__(self) -> Literal[3]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> u8vec3: ...
    def __pos__(self) -> u8vec3: ...
    def __abs__(self) -> u8vec3: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> u8vec3: ...

    def __add__(self, other: Union[glm_typing.U8Vector3, glm_typing.Number]) -> u8vec3: ...
    def __radd__(self, other: Union[glm_typing.U8Vector3, glm_typing.Number]) -> u8vec3: ...
    def __iadd__(self, other: Union[glm_typing.U8Vector3, glm_typing.Number]) -> u8vec3: ...

    def __sub__(self, other: Union[glm_typing.U8Vector3, glm_typing.Number]) -> u8vec3: ...
    def __rsub__(self, other: Union[glm_typing.U8Vector3, glm_typing.Number]) -> u8vec3: ...
    def __isub__(self, other: Union[glm_typing.U8Vector3, glm_typing.Number]) -> u8vec3: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> u8vec3: ...
    @overload
    def __mul__(self, other: glm_typing.U8Vector3) -> u8vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> u8vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.U8Vector3) -> u8vec3: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> u8vec3: ...
    @overload
    def __imul__(self, other: glm_typing.U8Vector3) -> u8vec3: ...

    def __mod__(self, other: Union[glm_typing.U8Vector3, glm_typing.Number]) -> u8vec3: ...
    def __rmod__(self, other: Union[glm_typing.U8Vector3, glm_typing.Number]) -> u8vec3: ...
    def __imod__(self, other: Union[glm_typing.U8Vector3, glm_typing.Number]) -> u8vec3: ...

    def __pow__(self, other: Union[glm_typing.U8Vector3, glm_typing.Number]) -> u8vec3: ...
    def __rpow__(self, other: Union[glm_typing.U8Vector3, glm_typing.Number]) -> u8vec3: ...
    def __ipow__(self, other: Union[glm_typing.U8Vector3, glm_typing.Number]) -> u8vec3: ...

    def __truediv__(self, other: Union[glm_typing.U8Vector3, glm_typing.Number]) -> u8vec3: ...
    def __rtruediv__(self, other: Union[glm_typing.U8Vector3, glm_typing.Number]) -> u8vec3: ...
    def __itruediv__(self, other: Union[glm_typing.U8Vector3, glm_typing.Number]) -> u8vec3: ...

    def __floordiv__(self, other: Union[glm_typing.U8Vector3, glm_typing.Number]) -> u8vec3: ...
    def __rfloordiv__(self, other: Union[glm_typing.U8Vector3, glm_typing.Number]) -> u8vec3: ...
    def __ifloordiv__(self, other: Union[glm_typing.U8Vector3, glm_typing.Number]) -> u8vec3: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> u8vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.U8Vector3) -> u8vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> u8vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U8Vector3) -> u8vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> u8vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.U8Vector3) -> u8vec3: ...

    def __divmod__(self, other: u8vec3) -> Tuple[u8vec3, u8vec3]: ...



class u8vec4:
    x: int
    y: int
    z: int
    w: int


    @property
    def xy(self) -> u8vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.U8Vector2) -> None: ...

    @property
    def yx(self) -> u8vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.U8Vector2) -> None: ...

    @property
    def xz(self) -> u8vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.U8Vector2) -> None: ...

    @property
    def zx(self) -> u8vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.U8Vector2) -> None: ...

    @property
    def xw(self) -> u8vec2: ...
    @xw.setter
    def xw(self, value: glm_typing.U8Vector2) -> None: ...

    @property
    def wx(self) -> u8vec2: ...
    @wx.setter
    def wx(self, value: glm_typing.U8Vector2) -> None: ...

    @property
    def yz(self) -> u8vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.U8Vector2) -> None: ...

    @property
    def zy(self) -> u8vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.U8Vector2) -> None: ...

    @property
    def yw(self) -> u8vec2: ...
    @yw.setter
    def yw(self, value: glm_typing.U8Vector2) -> None: ...

    @property
    def wy(self) -> u8vec2: ...
    @wy.setter
    def wy(self, value: glm_typing.U8Vector2) -> None: ...

    @property
    def zw(self) -> u8vec2: ...
    @zw.setter
    def zw(self, value: glm_typing.U8Vector2) -> None: ...

    @property
    def wz(self) -> u8vec2: ...
    @wz.setter
    def wz(self, value: glm_typing.U8Vector2) -> None: ...

    @property
    def xyz(self) -> u8vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def xzy(self) -> u8vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def yxz(self) -> u8vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def yzx(self) -> u8vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def zxy(self) -> u8vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def zyx(self) -> u8vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def xyw(self) -> u8vec3: ...
    @xyw.setter
    def xyw(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def xwy(self) -> u8vec3: ...
    @xwy.setter
    def xwy(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def yxw(self) -> u8vec3: ...
    @yxw.setter
    def yxw(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def ywx(self) -> u8vec3: ...
    @ywx.setter
    def ywx(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def wxy(self) -> u8vec3: ...
    @wxy.setter
    def wxy(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def wyx(self) -> u8vec3: ...
    @wyx.setter
    def wyx(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def xzw(self) -> u8vec3: ...
    @xzw.setter
    def xzw(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def xwz(self) -> u8vec3: ...
    @xwz.setter
    def xwz(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def zxw(self) -> u8vec3: ...
    @zxw.setter
    def zxw(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def zwx(self) -> u8vec3: ...
    @zwx.setter
    def zwx(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def wxz(self) -> u8vec3: ...
    @wxz.setter
    def wxz(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def wzx(self) -> u8vec3: ...
    @wzx.setter
    def wzx(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def yzw(self) -> u8vec3: ...
    @yzw.setter
    def yzw(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def ywz(self) -> u8vec3: ...
    @ywz.setter
    def ywz(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def zyw(self) -> u8vec3: ...
    @zyw.setter
    def zyw(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def zwy(self) -> u8vec3: ...
    @zwy.setter
    def zwy(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def wyz(self) -> u8vec3: ...
    @wyz.setter
    def wyz(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def wzy(self) -> u8vec3: ...
    @wzy.setter
    def wzy(self, value: glm_typing.U8Vector3) -> None: ...

    @property
    def xyzw(self) -> u8vec4: ...
    @xyzw.setter
    def xyzw(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def xywz(self) -> u8vec4: ...
    @xywz.setter
    def xywz(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def xzyw(self) -> u8vec4: ...
    @xzyw.setter
    def xzyw(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def xzwy(self) -> u8vec4: ...
    @xzwy.setter
    def xzwy(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def xwyz(self) -> u8vec4: ...
    @xwyz.setter
    def xwyz(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def xwzy(self) -> u8vec4: ...
    @xwzy.setter
    def xwzy(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def yxzw(self) -> u8vec4: ...
    @yxzw.setter
    def yxzw(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def yxwz(self) -> u8vec4: ...
    @yxwz.setter
    def yxwz(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def yzxw(self) -> u8vec4: ...
    @yzxw.setter
    def yzxw(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def yzwx(self) -> u8vec4: ...
    @yzwx.setter
    def yzwx(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def ywxz(self) -> u8vec4: ...
    @ywxz.setter
    def ywxz(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def ywzx(self) -> u8vec4: ...
    @ywzx.setter
    def ywzx(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def zxyw(self) -> u8vec4: ...
    @zxyw.setter
    def zxyw(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def zxwy(self) -> u8vec4: ...
    @zxwy.setter
    def zxwy(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def zyxw(self) -> u8vec4: ...
    @zyxw.setter
    def zyxw(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def zywx(self) -> u8vec4: ...
    @zywx.setter
    def zywx(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def zwxy(self) -> u8vec4: ...
    @zwxy.setter
    def zwxy(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def zwyx(self) -> u8vec4: ...
    @zwyx.setter
    def zwyx(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def wxyz(self) -> u8vec4: ...
    @wxyz.setter
    def wxyz(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def wxzy(self) -> u8vec4: ...
    @wxzy.setter
    def wxzy(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def wyxz(self) -> u8vec4: ...
    @wyxz.setter
    def wyxz(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def wyzx(self) -> u8vec4: ...
    @wyzx.setter
    def wyzx(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def wzxy(self) -> u8vec4: ...
    @wzxy.setter
    def wzxy(self, value: glm_typing.U8Vector4) -> None: ...

    @property
    def wzyx(self) -> u8vec4: ...
    @wzyx.setter
    def wzyx(self, value: glm_typing.U8Vector4) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number, w: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.AnyAnyVector4) -> None: ...

    def __len__(self) -> Literal[4]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> u8vec4: ...
    def __pos__(self) -> u8vec4: ...
    def __abs__(self) -> u8vec4: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int, int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> u8vec4: ...

    def __add__(self, other: Union[glm_typing.U8Vector4, glm_typing.Number]) -> u8vec4: ...
    def __radd__(self, other: Union[glm_typing.U8Vector4, glm_typing.Number]) -> u8vec4: ...
    def __iadd__(self, other: Union[glm_typing.U8Vector4, glm_typing.Number]) -> u8vec4: ...

    def __sub__(self, other: Union[glm_typing.U8Vector4, glm_typing.Number]) -> u8vec4: ...
    def __rsub__(self, other: Union[glm_typing.U8Vector4, glm_typing.Number]) -> u8vec4: ...
    def __isub__(self, other: Union[glm_typing.U8Vector4, glm_typing.Number]) -> u8vec4: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> u8vec4: ...
    @overload
    def __mul__(self, other: glm_typing.U8Vector4) -> u8vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> u8vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.U8Vector4) -> u8vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> u8vec4: ...
    @overload
    def __imul__(self, other: glm_typing.U8Vector4) -> u8vec4: ...

    def __mod__(self, other: Union[glm_typing.U8Vector4, glm_typing.Number]) -> u8vec4: ...
    def __rmod__(self, other: Union[glm_typing.U8Vector4, glm_typing.Number]) -> u8vec4: ...
    def __imod__(self, other: Union[glm_typing.U8Vector4, glm_typing.Number]) -> u8vec4: ...

    def __pow__(self, other: Union[glm_typing.U8Vector4, glm_typing.Number]) -> u8vec4: ...
    def __rpow__(self, other: Union[glm_typing.U8Vector4, glm_typing.Number]) -> u8vec4: ...
    def __ipow__(self, other: Union[glm_typing.U8Vector4, glm_typing.Number]) -> u8vec4: ...

    def __truediv__(self, other: Union[glm_typing.U8Vector4, glm_typing.Number]) -> u8vec4: ...
    def __rtruediv__(self, other: Union[glm_typing.U8Vector4, glm_typing.Number]) -> u8vec4: ...
    def __itruediv__(self, other: Union[glm_typing.U8Vector4, glm_typing.Number]) -> u8vec4: ...

    def __floordiv__(self, other: Union[glm_typing.U8Vector4, glm_typing.Number]) -> u8vec4: ...
    def __rfloordiv__(self, other: Union[glm_typing.U8Vector4, glm_typing.Number]) -> u8vec4: ...
    def __ifloordiv__(self, other: Union[glm_typing.U8Vector4, glm_typing.Number]) -> u8vec4: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> u8vec4: ...
    @overload
    def __matmul__(self, other: glm_typing.U8Vector4) -> u8vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> u8vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U8Vector4) -> u8vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> u8vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.U8Vector4) -> u8vec4: ...

    def __divmod__(self, other: u8vec4) -> Tuple[u8vec4, u8vec4]: ...



class umvec2:
    x: int
    y: int


    @property
    def xy(self) -> u32vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def yx(self) -> u32vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.U32Vector2) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector2, glm_typing.UAnyVector3, glm_typing.UAnyVector4]) -> None: ...

    def __len__(self) -> Literal[2]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> umvec2: ...
    def __pos__(self) -> umvec2: ...
    def __abs__(self) -> umvec2: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> umvec2: ...

    def __add__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> umvec2: ...
    def __radd__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> umvec2: ...
    def __iadd__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> umvec2: ...

    def __sub__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> umvec2: ...
    def __rsub__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> umvec2: ...
    def __isub__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> umvec2: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> umvec2: ...
    @overload
    def __mul__(self, other: glm_typing.U32Vector2) -> umvec2: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> umvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Vector2) -> umvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> umvec2: ...
    @overload
    def __imul__(self, other: glm_typing.U32Vector2) -> umvec2: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> umvec2: ...
    def __rmod__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> umvec2: ...
    def __imod__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> umvec2: ...

    def __pow__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> umvec2: ...
    def __rpow__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> umvec2: ...
    def __ipow__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> umvec2: ...

    def __truediv__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> umvec2: ...
    def __rtruediv__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> umvec2: ...
    def __itruediv__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> umvec2: ...

    def __floordiv__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> umvec2: ...
    def __rfloordiv__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> umvec2: ...
    def __ifloordiv__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> umvec2: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> umvec2: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Vector2) -> umvec2: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> umvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Vector2) -> umvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> umvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Vector2) -> umvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: umvec2) -> Tuple[umvec2, umvec2]: ...



class umvec3:
    x: int
    y: int
    z: int


    @property
    def xy(self) -> u32vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def yx(self) -> u32vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def xz(self) -> u32vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def zx(self) -> u32vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def yz(self) -> u32vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def zy(self) -> u32vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def xyz(self) -> u32vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def xzy(self) -> u32vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def yxz(self) -> u32vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def yzx(self) -> u32vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def zxy(self) -> u32vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def zyx(self) -> u32vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.U32Vector3) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector3, glm_typing.UAnyVector4]) -> None: ...

    def __len__(self) -> Literal[3]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> umvec3: ...
    def __pos__(self) -> umvec3: ...
    def __abs__(self) -> umvec3: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> umvec3: ...

    def __add__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> umvec3: ...
    def __radd__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> umvec3: ...
    def __iadd__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> umvec3: ...

    def __sub__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> umvec3: ...
    def __rsub__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> umvec3: ...
    def __isub__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> umvec3: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> umvec3: ...
    @overload
    def __mul__(self, other: glm_typing.U32Vector3) -> umvec3: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> umvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Vector3) -> umvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> umvec3: ...
    @overload
    def __imul__(self, other: glm_typing.U32Vector3) -> umvec3: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> umvec3: ...
    def __rmod__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> umvec3: ...
    def __imod__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> umvec3: ...

    def __pow__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> umvec3: ...
    def __rpow__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> umvec3: ...
    def __ipow__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> umvec3: ...

    def __truediv__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> umvec3: ...
    def __rtruediv__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> umvec3: ...
    def __itruediv__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> umvec3: ...

    def __floordiv__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> umvec3: ...
    def __rfloordiv__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> umvec3: ...
    def __ifloordiv__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> umvec3: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> umvec3: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Vector3) -> umvec3: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> umvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Vector3) -> umvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> umvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Vector3) -> umvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: umvec3) -> Tuple[umvec3, umvec3]: ...



class umvec4:
    x: int
    y: int
    z: int
    w: int


    @property
    def xy(self) -> u32vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def yx(self) -> u32vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def xz(self) -> u32vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def zx(self) -> u32vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def xw(self) -> u32vec2: ...
    @xw.setter
    def xw(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def wx(self) -> u32vec2: ...
    @wx.setter
    def wx(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def yz(self) -> u32vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def zy(self) -> u32vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def yw(self) -> u32vec2: ...
    @yw.setter
    def yw(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def wy(self) -> u32vec2: ...
    @wy.setter
    def wy(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def zw(self) -> u32vec2: ...
    @zw.setter
    def zw(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def wz(self) -> u32vec2: ...
    @wz.setter
    def wz(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def xyz(self) -> u32vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def xzy(self) -> u32vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def yxz(self) -> u32vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def yzx(self) -> u32vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def zxy(self) -> u32vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def zyx(self) -> u32vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def xyw(self) -> u32vec3: ...
    @xyw.setter
    def xyw(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def xwy(self) -> u32vec3: ...
    @xwy.setter
    def xwy(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def yxw(self) -> u32vec3: ...
    @yxw.setter
    def yxw(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def ywx(self) -> u32vec3: ...
    @ywx.setter
    def ywx(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def wxy(self) -> u32vec3: ...
    @wxy.setter
    def wxy(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def wyx(self) -> u32vec3: ...
    @wyx.setter
    def wyx(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def xzw(self) -> u32vec3: ...
    @xzw.setter
    def xzw(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def xwz(self) -> u32vec3: ...
    @xwz.setter
    def xwz(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def zxw(self) -> u32vec3: ...
    @zxw.setter
    def zxw(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def zwx(self) -> u32vec3: ...
    @zwx.setter
    def zwx(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def wxz(self) -> u32vec3: ...
    @wxz.setter
    def wxz(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def wzx(self) -> u32vec3: ...
    @wzx.setter
    def wzx(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def yzw(self) -> u32vec3: ...
    @yzw.setter
    def yzw(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def ywz(self) -> u32vec3: ...
    @ywz.setter
    def ywz(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def zyw(self) -> u32vec3: ...
    @zyw.setter
    def zyw(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def zwy(self) -> u32vec3: ...
    @zwy.setter
    def zwy(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def wyz(self) -> u32vec3: ...
    @wyz.setter
    def wyz(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def wzy(self) -> u32vec3: ...
    @wzy.setter
    def wzy(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def xyzw(self) -> u32vec4: ...
    @xyzw.setter
    def xyzw(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def xywz(self) -> u32vec4: ...
    @xywz.setter
    def xywz(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def xzyw(self) -> u32vec4: ...
    @xzyw.setter
    def xzyw(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def xzwy(self) -> u32vec4: ...
    @xzwy.setter
    def xzwy(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def xwyz(self) -> u32vec4: ...
    @xwyz.setter
    def xwyz(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def xwzy(self) -> u32vec4: ...
    @xwzy.setter
    def xwzy(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def yxzw(self) -> u32vec4: ...
    @yxzw.setter
    def yxzw(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def yxwz(self) -> u32vec4: ...
    @yxwz.setter
    def yxwz(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def yzxw(self) -> u32vec4: ...
    @yzxw.setter
    def yzxw(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def yzwx(self) -> u32vec4: ...
    @yzwx.setter
    def yzwx(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def ywxz(self) -> u32vec4: ...
    @ywxz.setter
    def ywxz(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def ywzx(self) -> u32vec4: ...
    @ywzx.setter
    def ywzx(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def zxyw(self) -> u32vec4: ...
    @zxyw.setter
    def zxyw(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def zxwy(self) -> u32vec4: ...
    @zxwy.setter
    def zxwy(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def zyxw(self) -> u32vec4: ...
    @zyxw.setter
    def zyxw(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def zywx(self) -> u32vec4: ...
    @zywx.setter
    def zywx(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def zwxy(self) -> u32vec4: ...
    @zwxy.setter
    def zwxy(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def zwyx(self) -> u32vec4: ...
    @zwyx.setter
    def zwyx(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def wxyz(self) -> u32vec4: ...
    @wxyz.setter
    def wxyz(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def wxzy(self) -> u32vec4: ...
    @wxzy.setter
    def wxzy(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def wyxz(self) -> u32vec4: ...
    @wyxz.setter
    def wyxz(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def wyzx(self) -> u32vec4: ...
    @wyzx.setter
    def wyzx(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def wzxy(self) -> u32vec4: ...
    @wzxy.setter
    def wzxy(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def wzyx(self) -> u32vec4: ...
    @wzyx.setter
    def wzyx(self, value: glm_typing.U32Vector4) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number, w: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.AnyAnyVector4) -> None: ...

    def __len__(self) -> Literal[4]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> umvec4: ...
    def __pos__(self) -> umvec4: ...
    def __abs__(self) -> umvec4: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int, int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> umvec4: ...

    def __add__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> umvec4: ...
    def __radd__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> umvec4: ...
    def __iadd__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> umvec4: ...

    def __sub__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> umvec4: ...
    def __rsub__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> umvec4: ...
    def __isub__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> umvec4: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> umvec4: ...
    @overload
    def __mul__(self, other: glm_typing.U32Vector4) -> umvec4: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> umvec4: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Vector4) -> umvec4: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> umvec4: ...
    @overload
    def __imul__(self, other: glm_typing.U32Vector4) -> umvec4: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> umvec4: ...
    def __rmod__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> umvec4: ...
    def __imod__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> umvec4: ...

    def __pow__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> umvec4: ...
    def __rpow__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> umvec4: ...
    def __ipow__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> umvec4: ...

    def __truediv__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> umvec4: ...
    def __rtruediv__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> umvec4: ...
    def __itruediv__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> umvec4: ...

    def __floordiv__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> umvec4: ...
    def __rfloordiv__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> umvec4: ...
    def __ifloordiv__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> umvec4: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> umvec4: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Vector4) -> umvec4: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> umvec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Vector4) -> umvec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> umvec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Vector4) -> umvec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: umvec4) -> Tuple[umvec4, umvec4]: ...


u32vec1 = uvec1

class uvec1:
    x: int



    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector1, glm_typing.UAnyVector2, glm_typing.UAnyVector3, glm_typing.UAnyVector4]) -> None: ...

    def __len__(self) -> Literal[1]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> uvec1: ...
    def __pos__(self) -> uvec1: ...
    def __abs__(self) -> uvec1: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> uvec1: ...

    def __add__(self, other: Union[glm_typing.U32Vector1, glm_typing.Number]) -> uvec1: ...
    def __radd__(self, other: Union[glm_typing.U32Vector1, glm_typing.Number]) -> uvec1: ...
    def __iadd__(self, other: Union[glm_typing.U32Vector1, glm_typing.Number]) -> uvec1: ...

    def __sub__(self, other: Union[glm_typing.U32Vector1, glm_typing.Number]) -> uvec1: ...
    def __rsub__(self, other: Union[glm_typing.U32Vector1, glm_typing.Number]) -> uvec1: ...
    def __isub__(self, other: Union[glm_typing.U32Vector1, glm_typing.Number]) -> uvec1: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> uvec1: ...
    @overload
    def __mul__(self, other: glm_typing.U32Vector1) -> uvec1: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> uvec1: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Vector1) -> uvec1: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> uvec1: ...
    @overload
    def __imul__(self, other: glm_typing.U32Vector1) -> uvec1: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.U32Vector1, glm_typing.Number]) -> uvec1: ...
    def __rmod__(self, other: Union[glm_typing.U32Vector1, glm_typing.Number]) -> uvec1: ...
    def __imod__(self, other: Union[glm_typing.U32Vector1, glm_typing.Number]) -> uvec1: ...

    def __pow__(self, other: Union[glm_typing.U32Vector1, glm_typing.Number]) -> uvec1: ...
    def __rpow__(self, other: Union[glm_typing.U32Vector1, glm_typing.Number]) -> uvec1: ...
    def __ipow__(self, other: Union[glm_typing.U32Vector1, glm_typing.Number]) -> uvec1: ...

    def __truediv__(self, other: Union[glm_typing.U32Vector1, glm_typing.Number]) -> uvec1: ...
    def __rtruediv__(self, other: Union[glm_typing.U32Vector1, glm_typing.Number]) -> uvec1: ...
    def __itruediv__(self, other: Union[glm_typing.U32Vector1, glm_typing.Number]) -> uvec1: ...

    def __floordiv__(self, other: Union[glm_typing.U32Vector1, glm_typing.Number]) -> uvec1: ...
    def __rfloordiv__(self, other: Union[glm_typing.U32Vector1, glm_typing.Number]) -> uvec1: ...
    def __ifloordiv__(self, other: Union[glm_typing.U32Vector1, glm_typing.Number]) -> uvec1: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> uvec1: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Vector1) -> uvec1: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> uvec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Vector1) -> uvec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> uvec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Vector1) -> uvec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: uvec1) -> Tuple[uvec1, uvec1]: ...


u32vec2 = uvec2

class uvec2:
    x: int
    y: int


    @property
    def xy(self) -> u32vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def yx(self) -> u32vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.U32Vector2) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector2, glm_typing.UAnyVector3, glm_typing.UAnyVector4]) -> None: ...

    def __len__(self) -> Literal[2]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> uvec2: ...
    def __pos__(self) -> uvec2: ...
    def __abs__(self) -> uvec2: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> uvec2: ...

    def __add__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> uvec2: ...
    def __radd__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> uvec2: ...
    def __iadd__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> uvec2: ...

    def __sub__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> uvec2: ...
    def __rsub__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> uvec2: ...
    def __isub__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> uvec2: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> uvec2: ...
    @overload
    def __mul__(self, other: glm_typing.U32Vector2) -> uvec2: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> uvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Vector2) -> uvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> uvec2: ...
    @overload
    def __imul__(self, other: glm_typing.U32Vector2) -> uvec2: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> uvec2: ...
    def __rmod__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> uvec2: ...
    def __imod__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> uvec2: ...

    def __pow__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> uvec2: ...
    def __rpow__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> uvec2: ...
    def __ipow__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> uvec2: ...

    def __truediv__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> uvec2: ...
    def __rtruediv__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> uvec2: ...
    def __itruediv__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> uvec2: ...

    def __floordiv__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> uvec2: ...
    def __rfloordiv__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> uvec2: ...
    def __ifloordiv__(self, other: Union[glm_typing.U32Vector2, glm_typing.Number]) -> uvec2: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> uvec2: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Vector2) -> uvec2: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> uvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Vector2) -> uvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> uvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Vector2) -> uvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: uvec2) -> Tuple[uvec2, uvec2]: ...


u32vec3 = uvec3

class uvec3:
    x: int
    y: int
    z: int


    @property
    def xy(self) -> u32vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def yx(self) -> u32vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def xz(self) -> u32vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def zx(self) -> u32vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def yz(self) -> u32vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def zy(self) -> u32vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def xyz(self) -> u32vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def xzy(self) -> u32vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def yxz(self) -> u32vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def yzx(self) -> u32vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def zxy(self) -> u32vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def zyx(self) -> u32vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.U32Vector3) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector3, glm_typing.UAnyVector4]) -> None: ...

    def __len__(self) -> Literal[3]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> uvec3: ...
    def __pos__(self) -> uvec3: ...
    def __abs__(self) -> uvec3: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> uvec3: ...

    def __add__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> uvec3: ...
    def __radd__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> uvec3: ...
    def __iadd__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> uvec3: ...

    def __sub__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> uvec3: ...
    def __rsub__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> uvec3: ...
    def __isub__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> uvec3: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> uvec3: ...
    @overload
    def __mul__(self, other: glm_typing.U32Vector3) -> uvec3: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> uvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Vector3) -> uvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> uvec3: ...
    @overload
    def __imul__(self, other: glm_typing.U32Vector3) -> uvec3: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> uvec3: ...
    def __rmod__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> uvec3: ...
    def __imod__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> uvec3: ...

    def __pow__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> uvec3: ...
    def __rpow__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> uvec3: ...
    def __ipow__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> uvec3: ...

    def __truediv__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> uvec3: ...
    def __rtruediv__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> uvec3: ...
    def __itruediv__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> uvec3: ...

    def __floordiv__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> uvec3: ...
    def __rfloordiv__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> uvec3: ...
    def __ifloordiv__(self, other: Union[glm_typing.U32Vector3, glm_typing.Number]) -> uvec3: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> uvec3: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Vector3) -> uvec3: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> uvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Vector3) -> uvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> uvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Vector3) -> uvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: uvec3) -> Tuple[uvec3, uvec3]: ...


u32vec4 = uvec4

class uvec4:
    x: int
    y: int
    z: int
    w: int


    @property
    def xy(self) -> u32vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def yx(self) -> u32vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def xz(self) -> u32vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def zx(self) -> u32vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def xw(self) -> u32vec2: ...
    @xw.setter
    def xw(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def wx(self) -> u32vec2: ...
    @wx.setter
    def wx(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def yz(self) -> u32vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def zy(self) -> u32vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def yw(self) -> u32vec2: ...
    @yw.setter
    def yw(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def wy(self) -> u32vec2: ...
    @wy.setter
    def wy(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def zw(self) -> u32vec2: ...
    @zw.setter
    def zw(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def wz(self) -> u32vec2: ...
    @wz.setter
    def wz(self, value: glm_typing.U32Vector2) -> None: ...

    @property
    def xyz(self) -> u32vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def xzy(self) -> u32vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def yxz(self) -> u32vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def yzx(self) -> u32vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def zxy(self) -> u32vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def zyx(self) -> u32vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def xyw(self) -> u32vec3: ...
    @xyw.setter
    def xyw(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def xwy(self) -> u32vec3: ...
    @xwy.setter
    def xwy(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def yxw(self) -> u32vec3: ...
    @yxw.setter
    def yxw(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def ywx(self) -> u32vec3: ...
    @ywx.setter
    def ywx(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def wxy(self) -> u32vec3: ...
    @wxy.setter
    def wxy(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def wyx(self) -> u32vec3: ...
    @wyx.setter
    def wyx(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def xzw(self) -> u32vec3: ...
    @xzw.setter
    def xzw(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def xwz(self) -> u32vec3: ...
    @xwz.setter
    def xwz(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def zxw(self) -> u32vec3: ...
    @zxw.setter
    def zxw(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def zwx(self) -> u32vec3: ...
    @zwx.setter
    def zwx(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def wxz(self) -> u32vec3: ...
    @wxz.setter
    def wxz(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def wzx(self) -> u32vec3: ...
    @wzx.setter
    def wzx(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def yzw(self) -> u32vec3: ...
    @yzw.setter
    def yzw(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def ywz(self) -> u32vec3: ...
    @ywz.setter
    def ywz(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def zyw(self) -> u32vec3: ...
    @zyw.setter
    def zyw(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def zwy(self) -> u32vec3: ...
    @zwy.setter
    def zwy(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def wyz(self) -> u32vec3: ...
    @wyz.setter
    def wyz(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def wzy(self) -> u32vec3: ...
    @wzy.setter
    def wzy(self, value: glm_typing.U32Vector3) -> None: ...

    @property
    def xyzw(self) -> u32vec4: ...
    @xyzw.setter
    def xyzw(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def xywz(self) -> u32vec4: ...
    @xywz.setter
    def xywz(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def xzyw(self) -> u32vec4: ...
    @xzyw.setter
    def xzyw(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def xzwy(self) -> u32vec4: ...
    @xzwy.setter
    def xzwy(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def xwyz(self) -> u32vec4: ...
    @xwyz.setter
    def xwyz(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def xwzy(self) -> u32vec4: ...
    @xwzy.setter
    def xwzy(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def yxzw(self) -> u32vec4: ...
    @yxzw.setter
    def yxzw(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def yxwz(self) -> u32vec4: ...
    @yxwz.setter
    def yxwz(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def yzxw(self) -> u32vec4: ...
    @yzxw.setter
    def yzxw(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def yzwx(self) -> u32vec4: ...
    @yzwx.setter
    def yzwx(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def ywxz(self) -> u32vec4: ...
    @ywxz.setter
    def ywxz(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def ywzx(self) -> u32vec4: ...
    @ywzx.setter
    def ywzx(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def zxyw(self) -> u32vec4: ...
    @zxyw.setter
    def zxyw(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def zxwy(self) -> u32vec4: ...
    @zxwy.setter
    def zxwy(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def zyxw(self) -> u32vec4: ...
    @zyxw.setter
    def zyxw(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def zywx(self) -> u32vec4: ...
    @zywx.setter
    def zywx(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def zwxy(self) -> u32vec4: ...
    @zwxy.setter
    def zwxy(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def zwyx(self) -> u32vec4: ...
    @zwyx.setter
    def zwyx(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def wxyz(self) -> u32vec4: ...
    @wxyz.setter
    def wxyz(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def wxzy(self) -> u32vec4: ...
    @wxzy.setter
    def wxzy(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def wyxz(self) -> u32vec4: ...
    @wyxz.setter
    def wyxz(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def wyzx(self) -> u32vec4: ...
    @wyzx.setter
    def wyzx(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def wzxy(self) -> u32vec4: ...
    @wzxy.setter
    def wzxy(self, value: glm_typing.U32Vector4) -> None: ...

    @property
    def wzyx(self) -> u32vec4: ...
    @wzyx.setter
    def wzyx(self, value: glm_typing.U32Vector4) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number, w: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.AnyAnyVector4) -> None: ...

    def __len__(self) -> Literal[4]: ...
    def __getitem__(self, index: int) -> int: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[int, None, None]: ...

    def __neg__(self) -> uvec4: ...
    def __pos__(self) -> uvec4: ...
    def __abs__(self) -> uvec4: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[int]: ...
    def to_tuple(self) -> Tuple[int, int, int, int]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> uvec4: ...

    def __add__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> uvec4: ...
    def __radd__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> uvec4: ...
    def __iadd__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> uvec4: ...

    def __sub__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> uvec4: ...
    def __rsub__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> uvec4: ...
    def __isub__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> uvec4: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> uvec4: ...
    @overload
    def __mul__(self, other: glm_typing.U32Vector4) -> uvec4: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> uvec4: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Vector4) -> uvec4: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> uvec4: ...
    @overload
    def __imul__(self, other: glm_typing.U32Vector4) -> uvec4: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> uvec4: ...
    def __rmod__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> uvec4: ...
    def __imod__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> uvec4: ...

    def __pow__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> uvec4: ...
    def __rpow__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> uvec4: ...
    def __ipow__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> uvec4: ...

    def __truediv__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> uvec4: ...
    def __rtruediv__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> uvec4: ...
    def __itruediv__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> uvec4: ...

    def __floordiv__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> uvec4: ...
    def __rfloordiv__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> uvec4: ...
    def __ifloordiv__(self, other: Union[glm_typing.U32Vector4, glm_typing.Number]) -> uvec4: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> uvec4: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Vector4) -> uvec4: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> uvec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Vector4) -> uvec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> uvec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Vector4) -> uvec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: uvec4) -> Tuple[uvec4, uvec4]: ...


f32vec1 = vec1
fvec1 = vec1

class vec1:
    x: float



    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector1, glm_typing.FAnyVector2, glm_typing.FAnyVector3, glm_typing.FAnyVector4]) -> None: ...

    def __len__(self) -> Literal[1]: ...
    def __getitem__(self, index: int) -> float: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[float, None, None]: ...

    def __neg__(self) -> vec1: ...
    def __pos__(self) -> vec1: ...
    def __abs__(self) -> vec1: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[float]: ...
    def to_tuple(self) -> Tuple[float]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> vec1: ...

    def __add__(self, other: Union[glm_typing.F32Vector1, glm_typing.Number]) -> vec1: ...
    def __radd__(self, other: Union[glm_typing.F32Vector1, glm_typing.Number]) -> vec1: ...
    def __iadd__(self, other: Union[glm_typing.F32Vector1, glm_typing.Number]) -> vec1: ...

    def __sub__(self, other: Union[glm_typing.F32Vector1, glm_typing.Number]) -> vec1: ...
    def __rsub__(self, other: Union[glm_typing.F32Vector1, glm_typing.Number]) -> vec1: ...
    def __isub__(self, other: Union[glm_typing.F32Vector1, glm_typing.Number]) -> vec1: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> vec1: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector1) -> vec1: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> vec1: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector1) -> vec1: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> vec1: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector1) -> vec1: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.F32Vector1, glm_typing.Number]) -> vec1: ...
    def __rmod__(self, other: Union[glm_typing.F32Vector1, glm_typing.Number]) -> vec1: ...
    def __imod__(self, other: Union[glm_typing.F32Vector1, glm_typing.Number]) -> vec1: ...

    def __pow__(self, other: Union[glm_typing.F32Vector1, glm_typing.Number]) -> vec1: ...
    def __rpow__(self, other: Union[glm_typing.F32Vector1, glm_typing.Number]) -> vec1: ...
    def __ipow__(self, other: Union[glm_typing.F32Vector1, glm_typing.Number]) -> vec1: ...

    def __truediv__(self, other: Union[glm_typing.F32Vector1, glm_typing.Number]) -> vec1: ...
    def __rtruediv__(self, other: Union[glm_typing.F32Vector1, glm_typing.Number]) -> vec1: ...
    def __itruediv__(self, other: Union[glm_typing.F32Vector1, glm_typing.Number]) -> vec1: ...

    def __floordiv__(self, other: Union[glm_typing.F32Vector1, glm_typing.Number]) -> vec1: ...
    def __rfloordiv__(self, other: Union[glm_typing.F32Vector1, glm_typing.Number]) -> vec1: ...
    def __ifloordiv__(self, other: Union[glm_typing.F32Vector1, glm_typing.Number]) -> vec1: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> vec1: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector1) -> vec1: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> vec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector1) -> vec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> vec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector1) -> vec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: vec1) -> Tuple[vec1, vec1]: ...


f32vec2 = vec2
fvec2 = vec2

class vec2:
    x: float
    y: float


    @property
    def xy(self) -> f32vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def yx(self) -> f32vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.F32Vector2) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector2, glm_typing.FAnyVector3, glm_typing.FAnyVector4]) -> None: ...

    def __len__(self) -> Literal[2]: ...
    def __getitem__(self, index: int) -> float: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[float, None, None]: ...

    def __neg__(self) -> vec2: ...
    def __pos__(self) -> vec2: ...
    def __abs__(self) -> vec2: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[float]: ...
    def to_tuple(self) -> Tuple[float, float]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> vec2: ...

    def __add__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> vec2: ...
    def __radd__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> vec2: ...
    def __iadd__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> vec2: ...

    def __sub__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> vec2: ...
    def __rsub__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> vec2: ...
    def __isub__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> vec2: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> vec2: ...
    def __rmod__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> vec2: ...
    def __imod__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> vec2: ...

    def __pow__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> vec2: ...
    def __rpow__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> vec2: ...
    def __ipow__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> vec2: ...

    def __truediv__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> vec2: ...
    def __rtruediv__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> vec2: ...
    def __itruediv__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> vec2: ...

    def __floordiv__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> vec2: ...
    def __rfloordiv__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> vec2: ...
    def __ifloordiv__(self, other: Union[glm_typing.F32Vector2, glm_typing.Number]) -> vec2: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: vec2) -> Tuple[vec2, vec2]: ...


f32vec3 = vec3
fvec3 = vec3

class vec3:
    x: float
    y: float
    z: float


    @property
    def xy(self) -> f32vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def yx(self) -> f32vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def xz(self) -> f32vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def zx(self) -> f32vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def yz(self) -> f32vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def zy(self) -> f32vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def xyz(self) -> f32vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def xzy(self) -> f32vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def yxz(self) -> f32vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def yzx(self) -> f32vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def zxy(self) -> f32vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def zyx(self) -> f32vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.F32Vector3) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyVector3, glm_typing.FAnyVector4]) -> None: ...

    def __len__(self) -> Literal[3]: ...
    def __getitem__(self, index: int) -> float: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[float, None, None]: ...

    def __neg__(self) -> vec3: ...
    def __pos__(self) -> vec3: ...
    def __abs__(self) -> vec3: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[float]: ...
    def to_tuple(self) -> Tuple[float, float, float]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> vec3: ...

    def __add__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> vec3: ...
    def __radd__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> vec3: ...
    def __iadd__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> vec3: ...

    def __sub__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> vec3: ...
    def __rsub__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> vec3: ...
    def __isub__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> vec3: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> vec3: ...
    def __rmod__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> vec3: ...
    def __imod__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> vec3: ...

    def __pow__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> vec3: ...
    def __rpow__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> vec3: ...
    def __ipow__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> vec3: ...

    def __truediv__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> vec3: ...
    def __rtruediv__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> vec3: ...
    def __itruediv__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> vec3: ...

    def __floordiv__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> vec3: ...
    def __rfloordiv__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> vec3: ...
    def __ifloordiv__(self, other: Union[glm_typing.F32Vector3, glm_typing.Number]) -> vec3: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: vec3) -> Tuple[vec3, vec3]: ...


f32vec4 = vec4
fvec4 = vec4

class vec4:
    x: float
    y: float
    z: float
    w: float


    @property
    def xy(self) -> f32vec2: ...
    @xy.setter
    def xy(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def yx(self) -> f32vec2: ...
    @yx.setter
    def yx(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def xz(self) -> f32vec2: ...
    @xz.setter
    def xz(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def zx(self) -> f32vec2: ...
    @zx.setter
    def zx(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def xw(self) -> f32vec2: ...
    @xw.setter
    def xw(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def wx(self) -> f32vec2: ...
    @wx.setter
    def wx(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def yz(self) -> f32vec2: ...
    @yz.setter
    def yz(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def zy(self) -> f32vec2: ...
    @zy.setter
    def zy(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def yw(self) -> f32vec2: ...
    @yw.setter
    def yw(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def wy(self) -> f32vec2: ...
    @wy.setter
    def wy(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def zw(self) -> f32vec2: ...
    @zw.setter
    def zw(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def wz(self) -> f32vec2: ...
    @wz.setter
    def wz(self, value: glm_typing.F32Vector2) -> None: ...

    @property
    def xyz(self) -> f32vec3: ...
    @xyz.setter
    def xyz(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def xzy(self) -> f32vec3: ...
    @xzy.setter
    def xzy(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def yxz(self) -> f32vec3: ...
    @yxz.setter
    def yxz(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def yzx(self) -> f32vec3: ...
    @yzx.setter
    def yzx(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def zxy(self) -> f32vec3: ...
    @zxy.setter
    def zxy(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def zyx(self) -> f32vec3: ...
    @zyx.setter
    def zyx(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def xyw(self) -> f32vec3: ...
    @xyw.setter
    def xyw(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def xwy(self) -> f32vec3: ...
    @xwy.setter
    def xwy(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def yxw(self) -> f32vec3: ...
    @yxw.setter
    def yxw(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def ywx(self) -> f32vec3: ...
    @ywx.setter
    def ywx(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def wxy(self) -> f32vec3: ...
    @wxy.setter
    def wxy(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def wyx(self) -> f32vec3: ...
    @wyx.setter
    def wyx(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def xzw(self) -> f32vec3: ...
    @xzw.setter
    def xzw(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def xwz(self) -> f32vec3: ...
    @xwz.setter
    def xwz(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def zxw(self) -> f32vec3: ...
    @zxw.setter
    def zxw(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def zwx(self) -> f32vec3: ...
    @zwx.setter
    def zwx(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def wxz(self) -> f32vec3: ...
    @wxz.setter
    def wxz(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def wzx(self) -> f32vec3: ...
    @wzx.setter
    def wzx(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def yzw(self) -> f32vec3: ...
    @yzw.setter
    def yzw(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def ywz(self) -> f32vec3: ...
    @ywz.setter
    def ywz(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def zyw(self) -> f32vec3: ...
    @zyw.setter
    def zyw(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def zwy(self) -> f32vec3: ...
    @zwy.setter
    def zwy(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def wyz(self) -> f32vec3: ...
    @wyz.setter
    def wyz(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def wzy(self) -> f32vec3: ...
    @wzy.setter
    def wzy(self, value: glm_typing.F32Vector3) -> None: ...

    @property
    def xyzw(self) -> f32vec4: ...
    @xyzw.setter
    def xyzw(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def xywz(self) -> f32vec4: ...
    @xywz.setter
    def xywz(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def xzyw(self) -> f32vec4: ...
    @xzyw.setter
    def xzyw(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def xzwy(self) -> f32vec4: ...
    @xzwy.setter
    def xzwy(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def xwyz(self) -> f32vec4: ...
    @xwyz.setter
    def xwyz(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def xwzy(self) -> f32vec4: ...
    @xwzy.setter
    def xwzy(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def yxzw(self) -> f32vec4: ...
    @yxzw.setter
    def yxzw(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def yxwz(self) -> f32vec4: ...
    @yxwz.setter
    def yxwz(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def yzxw(self) -> f32vec4: ...
    @yzxw.setter
    def yzxw(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def yzwx(self) -> f32vec4: ...
    @yzwx.setter
    def yzwx(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def ywxz(self) -> f32vec4: ...
    @ywxz.setter
    def ywxz(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def ywzx(self) -> f32vec4: ...
    @ywzx.setter
    def ywzx(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def zxyw(self) -> f32vec4: ...
    @zxyw.setter
    def zxyw(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def zxwy(self) -> f32vec4: ...
    @zxwy.setter
    def zxwy(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def zyxw(self) -> f32vec4: ...
    @zyxw.setter
    def zyxw(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def zywx(self) -> f32vec4: ...
    @zywx.setter
    def zywx(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def zwxy(self) -> f32vec4: ...
    @zwxy.setter
    def zwxy(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def zwyx(self) -> f32vec4: ...
    @zwyx.setter
    def zwyx(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def wxyz(self) -> f32vec4: ...
    @wxyz.setter
    def wxyz(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def wxzy(self) -> f32vec4: ...
    @wxzy.setter
    def wxzy(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def wyxz(self) -> f32vec4: ...
    @wyxz.setter
    def wyxz(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def wyzx(self) -> f32vec4: ...
    @wyzx.setter
    def wyzx(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def wzxy(self) -> f32vec4: ...
    @wzxy.setter
    def wzxy(self, value: glm_typing.F32Vector4) -> None: ...

    @property
    def wzyx(self) -> f32vec4: ...
    @wzyx.setter
    def wzyx(self, value: glm_typing.F32Vector4) -> None: ...


    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number, w: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, x: glm_typing.AnyAnyVector4) -> None: ...

    def __len__(self) -> Literal[4]: ...
    def __getitem__(self, index: int) -> float: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[float, None, None]: ...

    def __neg__(self) -> vec4: ...
    def __pos__(self) -> vec4: ...
    def __abs__(self) -> vec4: ...

    def __lt__(self, other: Any) -> bool: ...
    def __le__(self, other: Any) -> bool: ...
    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...
    def __ge__(self, other: Any) -> bool: ...
    def __gt__(self, other: Any) -> bool: ...

    def to_list(self) -> List[float]: ...
    def to_tuple(self) -> Tuple[float, float, float, float]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> vec4: ...

    def __add__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> vec4: ...
    def __radd__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> vec4: ...
    def __iadd__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> vec4: ...

    def __sub__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> vec4: ...
    def __rsub__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> vec4: ...
    def __isub__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> vec4: ...

    @overload
    def __mul__(self, other: glm_typing.Number) -> vec4: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector4) -> vec4: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.Number) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector4) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.Number) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector4) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...

    def __mod__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> vec4: ...
    def __rmod__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> vec4: ...
    def __imod__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> vec4: ...

    def __pow__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> vec4: ...
    def __rpow__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> vec4: ...
    def __ipow__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> vec4: ...

    def __truediv__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> vec4: ...
    def __rtruediv__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> vec4: ...
    def __itruediv__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> vec4: ...

    def __floordiv__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> vec4: ...
    def __rfloordiv__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> vec4: ...
    def __ifloordiv__(self, other: Union[glm_typing.F32Vector4, glm_typing.Number]) -> vec4: ...

    @overload
    def __matmul__(self, other: glm_typing.Number) -> vec4: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector4) -> vec4: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.Number) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector4) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.Number) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector4) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix2x2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix3x2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Matrix4x2) -> vec4: ...

    def __divmod__(self, other: vec4) -> Tuple[vec4, vec4]: ...


dmat2 = dmat2x2
f64mat2 = dmat2x2
f64mat2x2 = dmat2x2

class dmat2x2:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix2x2, glm_typing.DAnyMatrix2x2, glm_typing.DAnyMatrix2x3, glm_typing.DAnyMatrix2x4, glm_typing.DAnyMatrix3x2, glm_typing.DAnyMatrix3x3, glm_typing.DAnyMatrix3x4, glm_typing.DAnyMatrix4x2, glm_typing.DAnyMatrix4x3, glm_typing.DAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[2]: ...
    def __len__(self) -> Literal[2]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[dmvec2, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> float: ...
    @overload
    def __getitem__(self, index: int) -> dmvec2: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[dvec2, dmvec2]) -> None: ...

    def __neg__(self) -> dmat2x2: ...
    def __pos__(self) -> dmat2x2: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[float]]: ...
    def to_tuple(self) -> Tuple[Tuple[float, float], Tuple[float, float]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> dmat2x2: ...

    def __add__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    def __radd__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    def __iadd__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...

    def __sub__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    def __rsub__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    def __isub__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...

    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector2) -> dvec2: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector1) -> dvec1: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector2) -> dvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector1) -> dvec1: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector2) -> dvec2: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector1) -> dvec1: ...

    @overload
    def __truediv__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __truediv__(self, other: glm_typing.D64Vector2) -> dvec2: ...
    @overload
    def __rtruediv__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __rtruediv__(self, other: glm_typing.D64Vector2) -> dvec2: ...
    @overload
    def __itruediv__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __itruediv__(self, other: glm_typing.D64Vector2) -> dvec2: ...

    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector2) -> dvec2: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector1) -> dvec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector2) -> dvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector1) -> dvec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector2) -> dvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector1) -> dvec1: ...


f64mat2x3 = dmat2x3

class dmat2x3:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix2x3, glm_typing.DAnyMatrix2x3, glm_typing.DAnyMatrix2x4, glm_typing.DAnyMatrix3x3, glm_typing.DAnyMatrix3x4, glm_typing.DAnyMatrix4x3, glm_typing.DAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[2]: ...
    def __len__(self) -> Literal[2]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[dmvec3, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> float: ...
    @overload
    def __getitem__(self, index: int) -> dmvec3: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[dvec3, dmvec3]) -> None: ...

    def __neg__(self) -> dmat2x3: ...
    def __pos__(self) -> dmat2x3: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[float]]: ...
    def to_tuple(self) -> Tuple[Tuple[float, float, float], Tuple[float, float, float]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> dmat2x3: ...

    def __add__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    def __radd__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    def __iadd__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...

    def __sub__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    def __rsub__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    def __isub__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...

    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector2) -> dvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector2) -> dvec3: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector2) -> dvec3: ...

    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector2) -> dvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector2) -> dvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector2) -> dvec3: ...


f64mat2x4 = dmat2x4

class dmat2x4:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix2x4, glm_typing.DAnyMatrix2x4, glm_typing.DAnyMatrix3x4, glm_typing.DAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[2]: ...
    def __len__(self) -> Literal[2]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[dmvec4, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> float: ...
    @overload
    def __getitem__(self, index: int) -> dmvec4: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[dvec4, dmvec4]) -> None: ...

    def __neg__(self) -> dmat2x4: ...
    def __pos__(self) -> dmat2x4: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[float]]: ...
    def to_tuple(self) -> Tuple[Tuple[float, float, float, float], Tuple[float, float, float, float]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> dmat2x4: ...

    def __add__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    def __radd__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    def __iadd__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...

    def __sub__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    def __rsub__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    def __isub__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...

    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector2) -> dvec4: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector2) -> dvec4: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector2) -> dvec4: ...

    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector2) -> dvec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector2) -> dvec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix2x2) -> dmat2x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix2x3) -> dmat2x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix2x4) -> dmat2x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector2) -> dvec4: ...


f64mat3x2 = dmat3x2

class dmat3x2:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix3x2, glm_typing.DAnyMatrix3x2, glm_typing.DAnyMatrix3x3, glm_typing.DAnyMatrix3x4, glm_typing.DAnyMatrix4x2, glm_typing.DAnyMatrix4x3, glm_typing.DAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[3]: ...
    def __len__(self) -> Literal[3]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[dmvec2, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> float: ...
    @overload
    def __getitem__(self, index: int) -> dmvec2: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[dvec2, dmvec2]) -> None: ...

    def __neg__(self) -> dmat3x2: ...
    def __pos__(self) -> dmat3x2: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[float]]: ...
    def to_tuple(self) -> Tuple[Tuple[float, float], Tuple[float, float], Tuple[float, float]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> dmat3x2: ...

    def __add__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    def __radd__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    def __iadd__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...

    def __sub__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    def __rsub__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    def __isub__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...

    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector3) -> dvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector3) -> dvec2: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector3) -> dvec2: ...

    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector3) -> dvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector3) -> dvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector3) -> dvec2: ...


dmat3 = dmat3x3
f64mat3 = dmat3x3
f64mat3x3 = dmat3x3

class dmat3x3:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, _8: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix3x3, glm_typing.DAnyMatrix3x3, glm_typing.DAnyMatrix3x4, glm_typing.DAnyMatrix4x3, glm_typing.DAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[3]: ...
    def __len__(self) -> Literal[3]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[dmvec3, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> float: ...
    @overload
    def __getitem__(self, index: int) -> dmvec3: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[dvec3, dmvec3]) -> None: ...

    def __neg__(self) -> dmat3x3: ...
    def __pos__(self) -> dmat3x3: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[float]]: ...
    def to_tuple(self) -> Tuple[Tuple[float, float, float], Tuple[float, float, float], Tuple[float, float, float]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> dmat3x3: ...

    def __add__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    def __radd__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    def __iadd__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...

    def __sub__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    def __rsub__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    def __isub__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...

    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector2) -> dvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector2) -> dvec2: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector2) -> dvec2: ...

    @overload
    def __truediv__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __truediv__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __rtruediv__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __rtruediv__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __itruediv__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __itruediv__(self, other: glm_typing.D64Vector3) -> dvec3: ...

    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector2) -> dvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector2) -> dvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector2) -> dvec2: ...


f64mat3x4 = dmat3x4

class dmat3x4:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, _8: glm_typing.Number, _9: glm_typing.Number, _10: glm_typing.Number, _11: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix3x4, glm_typing.DAnyMatrix3x4, glm_typing.DAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[3]: ...
    def __len__(self) -> Literal[3]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[dmvec4, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> float: ...
    @overload
    def __getitem__(self, index: int) -> dmvec4: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[dvec4, dmvec4]) -> None: ...

    def __neg__(self) -> dmat3x4: ...
    def __pos__(self) -> dmat3x4: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[float]]: ...
    def to_tuple(self) -> Tuple[Tuple[float, float, float, float], Tuple[float, float, float, float], Tuple[float, float, float, float]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> dmat3x4: ...

    def __add__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    def __radd__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    def __iadd__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...

    def __sub__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    def __rsub__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    def __isub__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...

    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector3) -> dvec4: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector3) -> dvec4: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector3) -> dvec4: ...

    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector3) -> dvec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector3) -> dvec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix3x2) -> dmat3x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix3x3) -> dmat3x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix3x4) -> dmat3x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector3) -> dvec4: ...


f64mat4x2 = dmat4x2

class dmat4x2:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix4x2, glm_typing.DAnyMatrix4x2, glm_typing.DAnyMatrix4x3, glm_typing.DAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[4]: ...
    def __len__(self) -> Literal[4]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[dmvec2, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> float: ...
    @overload
    def __getitem__(self, index: int) -> dmvec2: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[dvec2, dmvec2]) -> None: ...

    def __neg__(self) -> dmat4x2: ...
    def __pos__(self) -> dmat4x2: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[float]]: ...
    def to_tuple(self) -> Tuple[Tuple[float, float], Tuple[float, float], Tuple[float, float], Tuple[float, float]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> dmat4x2: ...

    def __add__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    def __radd__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    def __iadd__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...

    def __sub__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    def __rsub__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    def __isub__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...

    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector4) -> dvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector4) -> dvec2: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector4) -> dvec2: ...

    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector4) -> dvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector4) -> dvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector4) -> dvec2: ...


f64mat4x3 = dmat4x3

class dmat4x3:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, _8: glm_typing.Number, _9: glm_typing.Number, _10: glm_typing.Number, _11: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix4x3, glm_typing.DAnyMatrix4x3, glm_typing.DAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[4]: ...
    def __len__(self) -> Literal[4]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[dmvec3, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> float: ...
    @overload
    def __getitem__(self, index: int) -> dmvec3: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[dvec3, dmvec3]) -> None: ...

    def __neg__(self) -> dmat4x3: ...
    def __pos__(self) -> dmat4x3: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[float]]: ...
    def to_tuple(self) -> Tuple[Tuple[float, float, float], Tuple[float, float, float], Tuple[float, float, float], Tuple[float, float, float]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> dmat4x3: ...

    def __add__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    def __radd__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    def __iadd__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...

    def __sub__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    def __rsub__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    def __isub__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...

    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector4) -> dvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector4) -> dvec3: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector4) -> dvec3: ...

    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector4) -> dvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector4) -> dvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector4) -> dvec3: ...


dmat4 = dmat4x4
f64mat4 = dmat4x4
f64mat4x4 = dmat4x4

class dmat4x4:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, _8: glm_typing.Number, _9: glm_typing.Number, _10: glm_typing.Number, _11: glm_typing.Number, _12: glm_typing.Number, _13: glm_typing.Number, _14: glm_typing.Number, _15: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix4x4, glm_typing.DAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[4]: ...
    def __len__(self) -> Literal[4]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[dmvec4, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> float: ...
    @overload
    def __getitem__(self, index: int) -> dmvec4: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[dvec4, dmvec4]) -> None: ...

    def __neg__(self) -> dmat4x4: ...
    def __pos__(self) -> dmat4x4: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[float]]: ...
    def to_tuple(self) -> Tuple[Tuple[float, float, float, float], Tuple[float, float, float, float], Tuple[float, float, float, float], Tuple[float, float, float, float]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> dmat4x4: ...

    def __add__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    def __radd__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    def __iadd__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...

    def __sub__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    def __rsub__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    def __isub__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...

    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    @overload
    def __mul__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector4) -> dvec4: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    @overload
    def __rmul__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector4) -> dvec4: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    @overload
    def __imul__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector4) -> dvec4: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector3) -> dvec3: ...

    @overload
    def __truediv__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __truediv__(self, other: glm_typing.D64Vector4) -> dvec4: ...
    @overload
    def __rtruediv__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __rtruediv__(self, other: glm_typing.D64Vector4) -> dvec4: ...
    @overload
    def __itruediv__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __itruediv__(self, other: glm_typing.D64Vector4) -> dvec4: ...

    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    @overload
    def __matmul__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector4) -> dvec4: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector4) -> dvec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix4x2) -> dmat4x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix4x3) -> dmat4x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.DAnyMatrix4x4) -> dmat4x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector4) -> dvec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector3) -> dvec3: ...


i32mat2 = imat2x2
i32mat2x2 = imat2x2
imat2 = imat2x2

class imat2x2:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix2x2, glm_typing.IAnyMatrix2x2, glm_typing.IAnyMatrix2x3, glm_typing.IAnyMatrix2x4, glm_typing.IAnyMatrix3x2, glm_typing.IAnyMatrix3x3, glm_typing.IAnyMatrix3x4, glm_typing.IAnyMatrix4x2, glm_typing.IAnyMatrix4x3, glm_typing.IAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[2]: ...
    def __len__(self) -> Literal[2]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[imvec2, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> int: ...
    @overload
    def __getitem__(self, index: int) -> imvec2: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[ivec2, imvec2]) -> None: ...

    def __neg__(self) -> imat2x2: ...
    def __pos__(self) -> imat2x2: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[int]]: ...
    def to_tuple(self) -> Tuple[Tuple[int, int], Tuple[int, int]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> imat2x2: ...

    def __add__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    def __radd__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    def __iadd__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...

    def __sub__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    def __rsub__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    def __isub__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...

    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    @overload
    def __mul__(self, other: glm_typing.I32Vector2) -> ivec2: ...
    @overload
    def __mul__(self, other: glm_typing.I32Vector1) -> ivec1: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Vector2) -> ivec2: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Vector1) -> ivec1: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    @overload
    def __imul__(self, other: glm_typing.I32Vector2) -> ivec2: ...
    @overload
    def __imul__(self, other: glm_typing.I32Vector1) -> ivec1: ...

    @overload
    def __truediv__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __truediv__(self, other: glm_typing.I32Vector2) -> ivec2: ...
    @overload
    def __rtruediv__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __rtruediv__(self, other: glm_typing.I32Vector2) -> ivec2: ...
    @overload
    def __itruediv__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __itruediv__(self, other: glm_typing.I32Vector2) -> ivec2: ...

    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Vector2) -> ivec2: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Vector1) -> ivec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Vector2) -> ivec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Vector1) -> ivec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Vector2) -> ivec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Vector1) -> ivec1: ...


i32mat2x3 = imat2x3

class imat2x3:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix2x3, glm_typing.IAnyMatrix2x3, glm_typing.IAnyMatrix2x4, glm_typing.IAnyMatrix3x3, glm_typing.IAnyMatrix3x4, glm_typing.IAnyMatrix4x3, glm_typing.IAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[2]: ...
    def __len__(self) -> Literal[2]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[imvec3, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> int: ...
    @overload
    def __getitem__(self, index: int) -> imvec3: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[ivec3, imvec3]) -> None: ...

    def __neg__(self) -> imat2x3: ...
    def __pos__(self) -> imat2x3: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[int]]: ...
    def to_tuple(self) -> Tuple[Tuple[int, int, int], Tuple[int, int, int]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> imat2x3: ...

    def __add__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    def __radd__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    def __iadd__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...

    def __sub__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    def __rsub__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    def __isub__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...

    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    @overload
    def __mul__(self, other: glm_typing.I32Vector2) -> ivec3: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Vector2) -> ivec3: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    @overload
    def __imul__(self, other: glm_typing.I32Vector2) -> ivec3: ...

    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Vector2) -> ivec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Vector2) -> ivec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Vector2) -> ivec3: ...


i32mat2x4 = imat2x4

class imat2x4:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix2x4, glm_typing.IAnyMatrix2x4, glm_typing.IAnyMatrix3x4, glm_typing.IAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[2]: ...
    def __len__(self) -> Literal[2]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[imvec4, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> int: ...
    @overload
    def __getitem__(self, index: int) -> imvec4: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[ivec4, imvec4]) -> None: ...

    def __neg__(self) -> imat2x4: ...
    def __pos__(self) -> imat2x4: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[int]]: ...
    def to_tuple(self) -> Tuple[Tuple[int, int, int, int], Tuple[int, int, int, int]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> imat2x4: ...

    def __add__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    def __radd__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    def __iadd__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...

    def __sub__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    def __rsub__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    def __isub__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...

    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    @overload
    def __mul__(self, other: glm_typing.I32Vector2) -> ivec4: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Vector2) -> ivec4: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    @overload
    def __imul__(self, other: glm_typing.I32Vector2) -> ivec4: ...

    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Vector2) -> ivec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Vector2) -> ivec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix2x2) -> imat2x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix2x3) -> imat2x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix2x4) -> imat2x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Vector2) -> ivec4: ...


i32mat3x2 = imat3x2

class imat3x2:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix3x2, glm_typing.IAnyMatrix3x2, glm_typing.IAnyMatrix3x3, glm_typing.IAnyMatrix3x4, glm_typing.IAnyMatrix4x2, glm_typing.IAnyMatrix4x3, glm_typing.IAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[3]: ...
    def __len__(self) -> Literal[3]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[imvec2, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> int: ...
    @overload
    def __getitem__(self, index: int) -> imvec2: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[ivec2, imvec2]) -> None: ...

    def __neg__(self) -> imat3x2: ...
    def __pos__(self) -> imat3x2: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[int]]: ...
    def to_tuple(self) -> Tuple[Tuple[int, int], Tuple[int, int], Tuple[int, int]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> imat3x2: ...

    def __add__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    def __radd__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    def __iadd__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...

    def __sub__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    def __rsub__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    def __isub__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...

    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    @overload
    def __mul__(self, other: glm_typing.I32Vector3) -> ivec2: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Vector3) -> ivec2: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    @overload
    def __imul__(self, other: glm_typing.I32Vector3) -> ivec2: ...

    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Vector3) -> ivec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Vector3) -> ivec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Vector3) -> ivec2: ...


i32mat3 = imat3x3
i32mat3x3 = imat3x3
imat3 = imat3x3

class imat3x3:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, _8: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix3x3, glm_typing.IAnyMatrix3x3, glm_typing.IAnyMatrix3x4, glm_typing.IAnyMatrix4x3, glm_typing.IAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[3]: ...
    def __len__(self) -> Literal[3]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[imvec3, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> int: ...
    @overload
    def __getitem__(self, index: int) -> imvec3: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[ivec3, imvec3]) -> None: ...

    def __neg__(self) -> imat3x3: ...
    def __pos__(self) -> imat3x3: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[int]]: ...
    def to_tuple(self) -> Tuple[Tuple[int, int, int], Tuple[int, int, int], Tuple[int, int, int]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> imat3x3: ...

    def __add__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    def __radd__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    def __iadd__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...

    def __sub__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    def __rsub__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    def __isub__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...

    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    @overload
    def __mul__(self, other: glm_typing.I32Vector3) -> ivec3: ...
    @overload
    def __mul__(self, other: glm_typing.I32Vector2) -> ivec2: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Vector3) -> ivec3: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Vector2) -> ivec2: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    @overload
    def __imul__(self, other: glm_typing.I32Vector3) -> ivec3: ...
    @overload
    def __imul__(self, other: glm_typing.I32Vector2) -> ivec2: ...

    @overload
    def __truediv__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __truediv__(self, other: glm_typing.I32Vector3) -> ivec3: ...
    @overload
    def __rtruediv__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __rtruediv__(self, other: glm_typing.I32Vector3) -> ivec3: ...
    @overload
    def __itruediv__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __itruediv__(self, other: glm_typing.I32Vector3) -> ivec3: ...

    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Vector3) -> ivec3: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Vector2) -> ivec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Vector3) -> ivec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Vector2) -> ivec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Vector3) -> ivec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Vector2) -> ivec2: ...


i32mat3x4 = imat3x4

class imat3x4:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, _8: glm_typing.Number, _9: glm_typing.Number, _10: glm_typing.Number, _11: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix3x4, glm_typing.IAnyMatrix3x4, glm_typing.IAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[3]: ...
    def __len__(self) -> Literal[3]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[imvec4, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> int: ...
    @overload
    def __getitem__(self, index: int) -> imvec4: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[ivec4, imvec4]) -> None: ...

    def __neg__(self) -> imat3x4: ...
    def __pos__(self) -> imat3x4: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[int]]: ...
    def to_tuple(self) -> Tuple[Tuple[int, int, int, int], Tuple[int, int, int, int], Tuple[int, int, int, int]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> imat3x4: ...

    def __add__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    def __radd__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    def __iadd__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...

    def __sub__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    def __rsub__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    def __isub__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...

    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    @overload
    def __mul__(self, other: glm_typing.I32Vector3) -> ivec4: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Vector3) -> ivec4: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    @overload
    def __imul__(self, other: glm_typing.I32Vector3) -> ivec4: ...

    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Vector3) -> ivec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Vector3) -> ivec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix3x2) -> imat3x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix3x3) -> imat3x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix3x4) -> imat3x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Vector3) -> ivec4: ...


i32mat4x2 = imat4x2

class imat4x2:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix4x2, glm_typing.IAnyMatrix4x2, glm_typing.IAnyMatrix4x3, glm_typing.IAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[4]: ...
    def __len__(self) -> Literal[4]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[imvec2, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> int: ...
    @overload
    def __getitem__(self, index: int) -> imvec2: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[ivec2, imvec2]) -> None: ...

    def __neg__(self) -> imat4x2: ...
    def __pos__(self) -> imat4x2: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[int]]: ...
    def to_tuple(self) -> Tuple[Tuple[int, int], Tuple[int, int], Tuple[int, int], Tuple[int, int]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> imat4x2: ...

    def __add__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    def __radd__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    def __iadd__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...

    def __sub__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    def __rsub__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    def __isub__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...

    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __mul__(self, other: glm_typing.I32Vector4) -> ivec2: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Vector4) -> ivec2: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __imul__(self, other: glm_typing.I32Vector4) -> ivec2: ...

    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Vector4) -> ivec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Vector4) -> ivec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Vector4) -> ivec2: ...


i32mat4x3 = imat4x3

class imat4x3:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, _8: glm_typing.Number, _9: glm_typing.Number, _10: glm_typing.Number, _11: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix4x3, glm_typing.IAnyMatrix4x3, glm_typing.IAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[4]: ...
    def __len__(self) -> Literal[4]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[imvec3, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> int: ...
    @overload
    def __getitem__(self, index: int) -> imvec3: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[ivec3, imvec3]) -> None: ...

    def __neg__(self) -> imat4x3: ...
    def __pos__(self) -> imat4x3: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[int]]: ...
    def to_tuple(self) -> Tuple[Tuple[int, int, int], Tuple[int, int, int], Tuple[int, int, int], Tuple[int, int, int]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> imat4x3: ...

    def __add__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    def __radd__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    def __iadd__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...

    def __sub__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    def __rsub__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    def __isub__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...

    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __mul__(self, other: glm_typing.I32Vector4) -> ivec3: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Vector4) -> ivec3: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __imul__(self, other: glm_typing.I32Vector4) -> ivec3: ...

    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Vector4) -> ivec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Vector4) -> ivec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Vector4) -> ivec3: ...


i32mat4 = imat4x4
i32mat4x4 = imat4x4
imat4 = imat4x4

class imat4x4:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, _8: glm_typing.Number, _9: glm_typing.Number, _10: glm_typing.Number, _11: glm_typing.Number, _12: glm_typing.Number, _13: glm_typing.Number, _14: glm_typing.Number, _15: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix4x4, glm_typing.IAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[4]: ...
    def __len__(self) -> Literal[4]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[imvec4, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> int: ...
    @overload
    def __getitem__(self, index: int) -> imvec4: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[ivec4, imvec4]) -> None: ...

    def __neg__(self) -> imat4x4: ...
    def __pos__(self) -> imat4x4: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[int]]: ...
    def to_tuple(self) -> Tuple[Tuple[int, int, int, int], Tuple[int, int, int, int], Tuple[int, int, int, int], Tuple[int, int, int, int]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> imat4x4: ...

    def __add__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    def __radd__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    def __iadd__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...

    def __sub__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    def __rsub__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    def __isub__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...

    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    @overload
    def __mul__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __mul__(self, other: glm_typing.I32Vector4) -> ivec4: ...
    @overload
    def __mul__(self, other: glm_typing.I32Vector3) -> ivec3: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    @overload
    def __rmul__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Vector4) -> ivec4: ...
    @overload
    def __rmul__(self, other: glm_typing.I32Vector3) -> ivec3: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    @overload
    def __imul__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __imul__(self, other: glm_typing.I32Vector4) -> ivec4: ...
    @overload
    def __imul__(self, other: glm_typing.I32Vector3) -> ivec3: ...

    @overload
    def __truediv__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __truediv__(self, other: glm_typing.I32Vector4) -> ivec4: ...
    @overload
    def __rtruediv__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __rtruediv__(self, other: glm_typing.I32Vector4) -> ivec4: ...
    @overload
    def __itruediv__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __itruediv__(self, other: glm_typing.I32Vector4) -> ivec4: ...

    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    @overload
    def __matmul__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Vector4) -> ivec4: ...
    @overload
    def __matmul__(self, other: glm_typing.I32Vector3) -> ivec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Vector4) -> ivec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.I32Vector3) -> ivec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix4x2) -> imat4x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix4x3) -> imat4x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.IAnyMatrix4x4) -> imat4x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Vector4) -> ivec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.I32Vector3) -> ivec3: ...


f32mat2 = mat2x2
f32mat2x2 = mat2x2
fmat2 = mat2x2
fmat2x2 = mat2x2
mat2 = mat2x2

class mat2x2:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix2x2, glm_typing.FAnyMatrix2x2, glm_typing.FAnyMatrix2x3, glm_typing.FAnyMatrix2x4, glm_typing.FAnyMatrix3x2, glm_typing.FAnyMatrix3x3, glm_typing.FAnyMatrix3x4, glm_typing.FAnyMatrix4x2, glm_typing.FAnyMatrix4x3, glm_typing.FAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[2]: ...
    def __len__(self) -> Literal[2]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[mvec2, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> float: ...
    @overload
    def __getitem__(self, index: int) -> mvec2: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[vec2, mvec2]) -> None: ...

    def __neg__(self) -> mat2x2: ...
    def __pos__(self) -> mat2x2: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[float]]: ...
    def to_tuple(self) -> Tuple[Tuple[float, float], Tuple[float, float]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> mat2x2: ...

    def __add__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    def __radd__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    def __iadd__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...

    def __sub__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    def __rsub__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    def __isub__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...

    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector2) -> vec2: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector1) -> vec1: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector1) -> vec1: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector1) -> vec1: ...

    @overload
    def __truediv__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __truediv__(self, other: glm_typing.F32Vector2) -> vec2: ...
    @overload
    def __rtruediv__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __rtruediv__(self, other: glm_typing.F32Vector2) -> vec2: ...
    @overload
    def __itruediv__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __itruediv__(self, other: glm_typing.F32Vector2) -> vec2: ...

    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector2) -> vec2: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector1) -> vec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector1) -> vec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector1) -> vec1: ...


f32mat2x3 = mat2x3
fmat2x3 = mat2x3

class mat2x3:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix2x3, glm_typing.FAnyMatrix2x3, glm_typing.FAnyMatrix2x4, glm_typing.FAnyMatrix3x3, glm_typing.FAnyMatrix3x4, glm_typing.FAnyMatrix4x3, glm_typing.FAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[2]: ...
    def __len__(self) -> Literal[2]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[mvec3, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> float: ...
    @overload
    def __getitem__(self, index: int) -> mvec3: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[vec3, mvec3]) -> None: ...

    def __neg__(self) -> mat2x3: ...
    def __pos__(self) -> mat2x3: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[float]]: ...
    def to_tuple(self) -> Tuple[Tuple[float, float, float], Tuple[float, float, float]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> mat2x3: ...

    def __add__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    def __radd__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    def __iadd__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...

    def __sub__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    def __rsub__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    def __isub__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...

    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector2) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector2) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector2) -> vec3: ...

    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector2) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector2) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector2) -> vec3: ...


f32mat2x4 = mat2x4
fmat2x4 = mat2x4

class mat2x4:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix2x4, glm_typing.FAnyMatrix2x4, glm_typing.FAnyMatrix3x4, glm_typing.FAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[2]: ...
    def __len__(self) -> Literal[2]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[mvec4, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> float: ...
    @overload
    def __getitem__(self, index: int) -> mvec4: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[vec4, mvec4]) -> None: ...

    def __neg__(self) -> mat2x4: ...
    def __pos__(self) -> mat2x4: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[float]]: ...
    def to_tuple(self) -> Tuple[Tuple[float, float, float, float], Tuple[float, float, float, float]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> mat2x4: ...

    def __add__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    def __radd__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    def __iadd__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...

    def __sub__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    def __rsub__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    def __isub__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...

    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector2) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector2) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector2) -> vec4: ...

    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector2) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector2) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix2x2) -> mat2x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix2x3) -> mat2x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix2x4) -> mat2x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector2) -> vec4: ...


f32mat3x2 = mat3x2
fmat3x2 = mat3x2

class mat3x2:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix3x2, glm_typing.FAnyMatrix3x2, glm_typing.FAnyMatrix3x3, glm_typing.FAnyMatrix3x4, glm_typing.FAnyMatrix4x2, glm_typing.FAnyMatrix4x3, glm_typing.FAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[3]: ...
    def __len__(self) -> Literal[3]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[mvec2, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> float: ...
    @overload
    def __getitem__(self, index: int) -> mvec2: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[vec2, mvec2]) -> None: ...

    def __neg__(self) -> mat3x2: ...
    def __pos__(self) -> mat3x2: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[float]]: ...
    def to_tuple(self) -> Tuple[Tuple[float, float], Tuple[float, float], Tuple[float, float]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> mat3x2: ...

    def __add__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    def __radd__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    def __iadd__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...

    def __sub__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    def __rsub__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    def __isub__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...

    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector3) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector3) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector3) -> vec2: ...

    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector3) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector3) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector3) -> vec2: ...


f32mat3 = mat3x3
f32mat3x3 = mat3x3
fmat3 = mat3x3
fmat3x3 = mat3x3
mat3 = mat3x3

class mat3x3:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, _8: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix3x3, glm_typing.FAnyMatrix3x3, glm_typing.FAnyMatrix3x4, glm_typing.FAnyMatrix4x3, glm_typing.FAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[3]: ...
    def __len__(self) -> Literal[3]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[mvec3, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> float: ...
    @overload
    def __getitem__(self, index: int) -> mvec3: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[vec3, mvec3]) -> None: ...

    def __neg__(self) -> mat3x3: ...
    def __pos__(self) -> mat3x3: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[float]]: ...
    def to_tuple(self) -> Tuple[Tuple[float, float, float], Tuple[float, float, float], Tuple[float, float, float]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> mat3x3: ...

    def __add__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    def __radd__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    def __iadd__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...

    def __sub__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    def __rsub__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    def __isub__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...

    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector2) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector2) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector2) -> vec2: ...

    @overload
    def __truediv__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __truediv__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __rtruediv__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __rtruediv__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __itruediv__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __itruediv__(self, other: glm_typing.F32Vector3) -> vec3: ...

    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector2) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector2) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector2) -> vec2: ...


f32mat3x4 = mat3x4
fmat3x4 = mat3x4

class mat3x4:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, _8: glm_typing.Number, _9: glm_typing.Number, _10: glm_typing.Number, _11: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix3x4, glm_typing.FAnyMatrix3x4, glm_typing.FAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[3]: ...
    def __len__(self) -> Literal[3]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[mvec4, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> float: ...
    @overload
    def __getitem__(self, index: int) -> mvec4: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[vec4, mvec4]) -> None: ...

    def __neg__(self) -> mat3x4: ...
    def __pos__(self) -> mat3x4: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[float]]: ...
    def to_tuple(self) -> Tuple[Tuple[float, float, float, float], Tuple[float, float, float, float], Tuple[float, float, float, float]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> mat3x4: ...

    def __add__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    def __radd__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    def __iadd__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...

    def __sub__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    def __rsub__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    def __isub__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...

    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector3) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector3) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector3) -> vec4: ...

    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector3) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector3) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix3x2) -> mat3x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix3x3) -> mat3x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix3x4) -> mat3x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector3) -> vec4: ...


f32mat4x2 = mat4x2
fmat4x2 = mat4x2

class mat4x2:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix4x2, glm_typing.FAnyMatrix4x2, glm_typing.FAnyMatrix4x3, glm_typing.FAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[4]: ...
    def __len__(self) -> Literal[4]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[mvec2, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> float: ...
    @overload
    def __getitem__(self, index: int) -> mvec2: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[vec2, mvec2]) -> None: ...

    def __neg__(self) -> mat4x2: ...
    def __pos__(self) -> mat4x2: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[float]]: ...
    def to_tuple(self) -> Tuple[Tuple[float, float], Tuple[float, float], Tuple[float, float], Tuple[float, float]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> mat4x2: ...

    def __add__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    def __radd__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    def __iadd__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...

    def __sub__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    def __rsub__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    def __isub__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...

    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector4) -> vec2: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector4) -> vec2: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector4) -> vec2: ...

    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector4) -> vec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector4) -> vec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector4) -> vec2: ...


f32mat4x3 = mat4x3
fmat4x3 = mat4x3

class mat4x3:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, _8: glm_typing.Number, _9: glm_typing.Number, _10: glm_typing.Number, _11: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix4x3, glm_typing.FAnyMatrix4x3, glm_typing.FAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[4]: ...
    def __len__(self) -> Literal[4]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[mvec3, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> float: ...
    @overload
    def __getitem__(self, index: int) -> mvec3: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[vec3, mvec3]) -> None: ...

    def __neg__(self) -> mat4x3: ...
    def __pos__(self) -> mat4x3: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[float]]: ...
    def to_tuple(self) -> Tuple[Tuple[float, float, float], Tuple[float, float, float], Tuple[float, float, float], Tuple[float, float, float]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> mat4x3: ...

    def __add__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    def __radd__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    def __iadd__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...

    def __sub__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    def __rsub__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    def __isub__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...

    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector4) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector4) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector4) -> vec3: ...

    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector4) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector4) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector4) -> vec3: ...


f32mat4 = mat4x4
f32mat4x4 = mat4x4
fmat4 = mat4x4
fmat4x4 = mat4x4
mat4 = mat4x4

class mat4x4:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, _8: glm_typing.Number, _9: glm_typing.Number, _10: glm_typing.Number, _11: glm_typing.Number, _12: glm_typing.Number, _13: glm_typing.Number, _14: glm_typing.Number, _15: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix4x4, glm_typing.FAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[4]: ...
    def __len__(self) -> Literal[4]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[mvec4, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> float: ...
    @overload
    def __getitem__(self, index: int) -> mvec4: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[vec4, mvec4]) -> None: ...

    def __neg__(self) -> mat4x4: ...
    def __pos__(self) -> mat4x4: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[float]]: ...
    def to_tuple(self) -> Tuple[Tuple[float, float, float, float], Tuple[float, float, float, float], Tuple[float, float, float, float], Tuple[float, float, float, float]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> mat4x4: ...

    def __add__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    def __radd__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    def __iadd__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...

    def __sub__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    def __rsub__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    def __isub__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...

    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    @overload
    def __mul__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector4) -> vec4: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    @overload
    def __rmul__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector4) -> vec4: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    @overload
    def __imul__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector4) -> vec4: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector3) -> vec3: ...

    @overload
    def __truediv__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __truediv__(self, other: glm_typing.F32Vector4) -> vec4: ...
    @overload
    def __rtruediv__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __rtruediv__(self, other: glm_typing.F32Vector4) -> vec4: ...
    @overload
    def __itruediv__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __itruediv__(self, other: glm_typing.F32Vector4) -> vec4: ...

    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    @overload
    def __matmul__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector4) -> vec4: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector4) -> vec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix4x2) -> mat4x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix4x3) -> mat4x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.FAnyMatrix4x4) -> mat4x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector4) -> vec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector3) -> vec3: ...


u32mat2 = umat2x2
u32mat2x2 = umat2x2
umat2 = umat2x2

class umat2x2:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix2x2, glm_typing.UAnyMatrix2x2, glm_typing.UAnyMatrix2x3, glm_typing.UAnyMatrix2x4, glm_typing.UAnyMatrix3x2, glm_typing.UAnyMatrix3x3, glm_typing.UAnyMatrix3x4, glm_typing.UAnyMatrix4x2, glm_typing.UAnyMatrix4x3, glm_typing.UAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[2]: ...
    def __len__(self) -> Literal[2]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[umvec2, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> int: ...
    @overload
    def __getitem__(self, index: int) -> umvec2: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[uvec2, umvec2]) -> None: ...

    def __neg__(self) -> umat2x2: ...
    def __pos__(self) -> umat2x2: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[int]]: ...
    def to_tuple(self) -> Tuple[Tuple[int, int], Tuple[int, int]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> umat2x2: ...

    def __add__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    def __radd__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    def __iadd__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...

    def __sub__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    def __rsub__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    def __isub__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...

    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    @overload
    def __mul__(self, other: glm_typing.U32Vector2) -> uvec2: ...
    @overload
    def __mul__(self, other: glm_typing.U32Vector1) -> uvec1: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Vector2) -> uvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Vector1) -> uvec1: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    @overload
    def __imul__(self, other: glm_typing.U32Vector2) -> uvec2: ...
    @overload
    def __imul__(self, other: glm_typing.U32Vector1) -> uvec1: ...

    @overload
    def __truediv__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __truediv__(self, other: glm_typing.U32Vector2) -> uvec2: ...
    @overload
    def __rtruediv__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __rtruediv__(self, other: glm_typing.U32Vector2) -> uvec2: ...
    @overload
    def __itruediv__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __itruediv__(self, other: glm_typing.U32Vector2) -> uvec2: ...

    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Vector2) -> uvec2: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Vector1) -> uvec1: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Vector2) -> uvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Vector1) -> uvec1: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Vector2) -> uvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Vector1) -> uvec1: ...


u32mat2x3 = umat2x3

class umat2x3:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix2x3, glm_typing.UAnyMatrix2x3, glm_typing.UAnyMatrix2x4, glm_typing.UAnyMatrix3x3, glm_typing.UAnyMatrix3x4, glm_typing.UAnyMatrix4x3, glm_typing.UAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[2]: ...
    def __len__(self) -> Literal[2]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[umvec3, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> int: ...
    @overload
    def __getitem__(self, index: int) -> umvec3: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[uvec3, umvec3]) -> None: ...

    def __neg__(self) -> umat2x3: ...
    def __pos__(self) -> umat2x3: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[int]]: ...
    def to_tuple(self) -> Tuple[Tuple[int, int, int], Tuple[int, int, int]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> umat2x3: ...

    def __add__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    def __radd__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    def __iadd__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...

    def __sub__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    def __rsub__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    def __isub__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...

    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    @overload
    def __mul__(self, other: glm_typing.U32Vector2) -> uvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Vector2) -> uvec3: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    @overload
    def __imul__(self, other: glm_typing.U32Vector2) -> uvec3: ...

    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Vector2) -> uvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Vector2) -> uvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Vector2) -> uvec3: ...


u32mat2x4 = umat2x4

class umat2x4:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix2x4, glm_typing.UAnyMatrix2x4, glm_typing.UAnyMatrix3x4, glm_typing.UAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[2]: ...
    def __len__(self) -> Literal[2]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[umvec4, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> int: ...
    @overload
    def __getitem__(self, index: int) -> umvec4: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[uvec4, umvec4]) -> None: ...

    def __neg__(self) -> umat2x4: ...
    def __pos__(self) -> umat2x4: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[int]]: ...
    def to_tuple(self) -> Tuple[Tuple[int, int, int, int], Tuple[int, int, int, int]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> umat2x4: ...

    def __add__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    def __radd__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    def __iadd__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...

    def __sub__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    def __rsub__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    def __isub__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...

    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    @overload
    def __mul__(self, other: glm_typing.U32Vector2) -> uvec4: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Vector2) -> uvec4: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    @overload
    def __imul__(self, other: glm_typing.U32Vector2) -> uvec4: ...

    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Vector2) -> uvec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Vector2) -> uvec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix2x2) -> umat2x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix2x3) -> umat2x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix2x4) -> umat2x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Vector2) -> uvec4: ...


u32mat3x2 = umat3x2

class umat3x2:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix3x2, glm_typing.UAnyMatrix3x2, glm_typing.UAnyMatrix3x3, glm_typing.UAnyMatrix3x4, glm_typing.UAnyMatrix4x2, glm_typing.UAnyMatrix4x3, glm_typing.UAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[3]: ...
    def __len__(self) -> Literal[3]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[umvec2, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> int: ...
    @overload
    def __getitem__(self, index: int) -> umvec2: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[uvec2, umvec2]) -> None: ...

    def __neg__(self) -> umat3x2: ...
    def __pos__(self) -> umat3x2: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[int]]: ...
    def to_tuple(self) -> Tuple[Tuple[int, int], Tuple[int, int], Tuple[int, int]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> umat3x2: ...

    def __add__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    def __radd__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    def __iadd__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...

    def __sub__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    def __rsub__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    def __isub__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...

    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    @overload
    def __mul__(self, other: glm_typing.U32Vector3) -> uvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Vector3) -> uvec2: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    @overload
    def __imul__(self, other: glm_typing.U32Vector3) -> uvec2: ...

    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Vector3) -> uvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Vector3) -> uvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Vector3) -> uvec2: ...


u32mat3 = umat3x3
u32mat3x3 = umat3x3
umat3 = umat3x3

class umat3x3:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, _8: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix3x3, glm_typing.UAnyMatrix3x3, glm_typing.UAnyMatrix3x4, glm_typing.UAnyMatrix4x3, glm_typing.UAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[3]: ...
    def __len__(self) -> Literal[3]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[umvec3, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> int: ...
    @overload
    def __getitem__(self, index: int) -> umvec3: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[uvec3, umvec3]) -> None: ...

    def __neg__(self) -> umat3x3: ...
    def __pos__(self) -> umat3x3: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[int]]: ...
    def to_tuple(self) -> Tuple[Tuple[int, int, int], Tuple[int, int, int], Tuple[int, int, int]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> umat3x3: ...

    def __add__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    def __radd__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    def __iadd__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...

    def __sub__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    def __rsub__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    def __isub__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...

    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    @overload
    def __mul__(self, other: glm_typing.U32Vector3) -> uvec3: ...
    @overload
    def __mul__(self, other: glm_typing.U32Vector2) -> uvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Vector3) -> uvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Vector2) -> uvec2: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    @overload
    def __imul__(self, other: glm_typing.U32Vector3) -> uvec3: ...
    @overload
    def __imul__(self, other: glm_typing.U32Vector2) -> uvec2: ...

    @overload
    def __truediv__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __truediv__(self, other: glm_typing.U32Vector3) -> uvec3: ...
    @overload
    def __rtruediv__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __rtruediv__(self, other: glm_typing.U32Vector3) -> uvec3: ...
    @overload
    def __itruediv__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __itruediv__(self, other: glm_typing.U32Vector3) -> uvec3: ...

    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Vector3) -> uvec3: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Vector2) -> uvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Vector3) -> uvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Vector2) -> uvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Vector3) -> uvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Vector2) -> uvec2: ...


u32mat3x4 = umat3x4

class umat3x4:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, _8: glm_typing.Number, _9: glm_typing.Number, _10: glm_typing.Number, _11: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix3x4, glm_typing.UAnyMatrix3x4, glm_typing.UAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[3]: ...
    def __len__(self) -> Literal[3]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[umvec4, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> int: ...
    @overload
    def __getitem__(self, index: int) -> umvec4: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[uvec4, umvec4]) -> None: ...

    def __neg__(self) -> umat3x4: ...
    def __pos__(self) -> umat3x4: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[int]]: ...
    def to_tuple(self) -> Tuple[Tuple[int, int, int, int], Tuple[int, int, int, int], Tuple[int, int, int, int]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> umat3x4: ...

    def __add__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    def __radd__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    def __iadd__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...

    def __sub__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    def __rsub__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    def __isub__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...

    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    @overload
    def __mul__(self, other: glm_typing.U32Vector3) -> uvec4: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Vector3) -> uvec4: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    @overload
    def __imul__(self, other: glm_typing.U32Vector3) -> uvec4: ...

    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Vector3) -> uvec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Vector3) -> uvec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix3x2) -> umat3x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix3x3) -> umat3x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix3x4) -> umat3x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Vector3) -> uvec4: ...


u32mat4x2 = umat4x2

class umat4x2:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix4x2, glm_typing.UAnyMatrix4x2, glm_typing.UAnyMatrix4x3, glm_typing.UAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[4]: ...
    def __len__(self) -> Literal[4]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[umvec2, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> int: ...
    @overload
    def __getitem__(self, index: int) -> umvec2: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[uvec2, umvec2]) -> None: ...

    def __neg__(self) -> umat4x2: ...
    def __pos__(self) -> umat4x2: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[int]]: ...
    def to_tuple(self) -> Tuple[Tuple[int, int], Tuple[int, int], Tuple[int, int], Tuple[int, int]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> umat4x2: ...

    def __add__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    def __radd__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    def __iadd__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...

    def __sub__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    def __rsub__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    def __isub__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...

    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __mul__(self, other: glm_typing.U32Vector4) -> uvec2: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Vector4) -> uvec2: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __imul__(self, other: glm_typing.U32Vector4) -> uvec2: ...

    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Vector4) -> uvec2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Vector4) -> uvec2: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Vector4) -> uvec2: ...


u32mat4x3 = umat4x3

class umat4x3:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, _8: glm_typing.Number, _9: glm_typing.Number, _10: glm_typing.Number, _11: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix4x3, glm_typing.UAnyMatrix4x3, glm_typing.UAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[4]: ...
    def __len__(self) -> Literal[4]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[umvec3, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> int: ...
    @overload
    def __getitem__(self, index: int) -> umvec3: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[uvec3, umvec3]) -> None: ...

    def __neg__(self) -> umat4x3: ...
    def __pos__(self) -> umat4x3: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[int]]: ...
    def to_tuple(self) -> Tuple[Tuple[int, int, int], Tuple[int, int, int], Tuple[int, int, int], Tuple[int, int, int]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> umat4x3: ...

    def __add__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    def __radd__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    def __iadd__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...

    def __sub__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    def __rsub__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    def __isub__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...

    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __mul__(self, other: glm_typing.U32Vector4) -> uvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Vector4) -> uvec3: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __imul__(self, other: glm_typing.U32Vector4) -> uvec3: ...

    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Vector4) -> uvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Vector4) -> uvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Vector4) -> uvec3: ...


u32mat4 = umat4x4
u32mat4x4 = umat4x4
umat4 = umat4x4

class umat4x4:

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, x: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, _0: glm_typing.Number, _1: glm_typing.Number, _2: glm_typing.Number, _3: glm_typing.Number, _4: glm_typing.Number, _5: glm_typing.Number, _6: glm_typing.Number, _7: glm_typing.Number, _8: glm_typing.Number, _9: glm_typing.Number, _10: glm_typing.Number, _11: glm_typing.Number, _12: glm_typing.Number, _13: glm_typing.Number, _14: glm_typing.Number, _15: glm_typing.Number, /) -> None: ...
    @overload
    def __init__(self, x: Union[glm_typing.AnyAnyMatrix4x4, glm_typing.UAnyMatrix4x4], /) -> None: ...

    def length(self) -> Literal[4]: ...
    def __len__(self) -> Literal[4]: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[umvec4, None, None]: ...

    @overload
    def __getitem__(self, index: Tuple[int, int]) -> int: ...
    @overload
    def __getitem__(self, index: int) -> umvec4: ...

    @overload
    def __setitem__(self, index: Tuple[int, int], value: glm_typing.Number) -> None: ...
    @overload
    def __setitem__(self, index: int, value: Union[uvec4, umvec4]) -> None: ...

    def __neg__(self) -> umat4x4: ...
    def __pos__(self) -> umat4x4: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def to_list(self) -> List[List[int]]: ...
    def to_tuple(self) -> Tuple[Tuple[int, int, int, int], Tuple[int, int, int, int], Tuple[int, int, int, int], Tuple[int, int, int, int]]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> umat4x4: ...

    def __add__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    def __radd__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    def __iadd__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...

    def __sub__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    def __rsub__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    def __isub__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...

    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    @overload
    def __mul__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __mul__(self, other: glm_typing.U32Vector4) -> uvec4: ...
    @overload
    def __mul__(self, other: glm_typing.U32Vector3) -> uvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    @overload
    def __rmul__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Vector4) -> uvec4: ...
    @overload
    def __rmul__(self, other: glm_typing.U32Vector3) -> uvec3: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    @overload
    def __imul__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __imul__(self, other: glm_typing.U32Vector4) -> uvec4: ...
    @overload
    def __imul__(self, other: glm_typing.U32Vector3) -> uvec3: ...

    @overload
    def __truediv__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __truediv__(self, other: glm_typing.U32Vector4) -> uvec4: ...
    @overload
    def __rtruediv__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __rtruediv__(self, other: glm_typing.U32Vector4) -> uvec4: ...
    @overload
    def __itruediv__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __itruediv__(self, other: glm_typing.U32Vector4) -> uvec4: ...

    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    @overload
    def __matmul__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Vector4) -> uvec4: ...
    @overload
    def __matmul__(self, other: glm_typing.U32Vector3) -> uvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Vector4) -> uvec4: ...
    @overload
    def __rmatmul__(self, other: glm_typing.U32Vector3) -> uvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix4x2) -> umat4x2: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix4x3) -> umat4x3: ...
    @overload
    def __imatmul__(self, other: glm_typing.UAnyMatrix4x4) -> umat4x4: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Vector4) -> uvec4: ...
    @overload
    def __imatmul__(self, other: glm_typing.U32Vector3) -> uvec3: ...


f64quat = dquat

class dquat:
    w: float
    x: float
    y: float
    z: float

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, w: glm_typing.Number, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, w: Union[glm_typing.AnyAnyQuaternion, glm_typing.D64Matrix3x3, glm_typing.D64Matrix4x4, glm_typing.D64Vector3]) -> None: ...

    def length(self) -> Literal[4]: ...
    def __len__(self) -> Literal[4]: ...
    def __getitem__(self, index: int) -> float: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[float, None, None]: ...

    def to_list(self) -> List[float]: ...
    def to_tuple(self) -> Tuple[float, float, float, float]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> dquat: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    @overload
    def __mul__(self, other: Union[dquat, glm_typing.Number]) -> dquat: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __mul__(self, other: glm_typing.D64Vector4) -> dvec4: ...
    @overload
    def __rmul__(self, other: Union[dquat, glm_typing.Number]) -> dquat: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __rmul__(self, other: glm_typing.D64Vector4) -> dvec4: ...
    @overload
    def __imul__(self, other: Union[dquat, glm_typing.Number]) -> dquat: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __imul__(self, other: glm_typing.D64Vector4) -> dvec4: ...

    @overload
    def __matmul__(self, other: Union[dquat, glm_typing.Number]) -> dquat: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __matmul__(self, other: glm_typing.D64Vector4) -> dvec4: ...
    @overload
    def __rmatmul__(self, other: Union[dquat, glm_typing.Number]) -> dquat: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.D64Vector4) -> dvec4: ...
    @overload
    def __imatmul__(self, other: Union[dquat, glm_typing.Number]) -> dquat: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector3) -> dvec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.D64Vector4) -> dvec4: ...


f32quat = quat
fquat = quat

class quat:
    w: float
    x: float
    y: float
    z: float

    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, w: glm_typing.Number, x: glm_typing.Number, y: glm_typing.Number, z: glm_typing.Number) -> None: ...
    @overload
    def __init__(self, w: Union[glm_typing.AnyAnyQuaternion, glm_typing.F32Matrix3x3, glm_typing.F32Matrix4x4, glm_typing.F32Vector3]) -> None: ...

    def length(self) -> Literal[4]: ...
    def __len__(self) -> Literal[4]: ...
    def __getitem__(self, index: int) -> float: ...
    def __setitem__(self, index: int, value: glm_typing.Number) -> None: ...
    def __contains__(self, value: Any) -> bool: ...
    def __iter__(self) -> Generator[float, None, None]: ...

    def to_list(self) -> List[float]: ...
    def to_tuple(self) -> Tuple[float, float, float, float]: ...
    def to_bytes(self) -> bytes: ...

    @staticmethod
    def from_bytes(bytes: bytes, /) -> quat: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    @overload
    def __mul__(self, other: Union[quat, glm_typing.Number]) -> quat: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __mul__(self, other: glm_typing.F32Vector4) -> vec4: ...
    @overload
    def __rmul__(self, other: Union[quat, glm_typing.Number]) -> quat: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __rmul__(self, other: glm_typing.F32Vector4) -> vec4: ...
    @overload
    def __imul__(self, other: Union[quat, glm_typing.Number]) -> quat: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __imul__(self, other: glm_typing.F32Vector4) -> vec4: ...

    @overload
    def __matmul__(self, other: Union[quat, glm_typing.Number]) -> quat: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __matmul__(self, other: glm_typing.F32Vector4) -> vec4: ...
    @overload
    def __rmatmul__(self, other: Union[quat, glm_typing.Number]) -> quat: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __rmatmul__(self, other: glm_typing.F32Vector4) -> vec4: ...
    @overload
    def __imatmul__(self, other: Union[quat, glm_typing.Number]) -> quat: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector3) -> vec3: ...
    @overload
    def __imatmul__(self, other: glm_typing.F32Vector4) -> vec4: ...



_AT = TypeVar('_AT', ctypes.c_bool, ctypes.c_byte, ctypes.c_int8, ctypes.c_ubyte, ctypes.c_uint8, ctypes.c_short, ctypes.c_int16, ctypes.c_ushort, ctypes.c_uint16, ctypes.c_int, ctypes.c_int32, ctypes.c_uint, ctypes.c_uint32, ctypes.c_long, ctypes.c_int64, ctypes.c_ulong, ctypes.c_uint64, ctypes.c_longlong, ctypes.c_ulonglong, ctypes.c_size_t, ctypes.c_ssize_t, ctypes.c_float, ctypes.c_double, ctypes.c_longdouble, dmat2x2, dmat2x3, dmat2x4, dmat3x2, dmat3x3, dmat3x4, dmat4x2, dmat4x3, dmat4x4, imat2x2, imat2x3, imat2x4, imat3x2, imat3x3, imat3x4, imat4x2, imat4x3, imat4x4, mat2x2, mat2x3, mat2x4, mat3x2, mat3x3, mat3x4, mat4x2, mat4x3, mat4x4, umat2x2, umat2x3, umat2x4, umat3x2, umat3x3, umat3x4, umat4x2, umat4x3, umat4x4, dquat, quat, bvec1, bvec2, bvec3, bvec4, dmvec2, dmvec3, dmvec4, dvec1, dvec2, dvec3, dvec4, i16vec1, i16vec2, i16vec3, i16vec4, i64vec1, i64vec2, i64vec3, i64vec4, i8vec1, i8vec2, i8vec3, i8vec4, imvec2, imvec3, imvec4, ivec1, ivec2, ivec3, ivec4, mvec2, mvec3, mvec4, u16vec1, u16vec2, u16vec3, u16vec4, u64vec1, u64vec2, u64vec3, u64vec4, u8vec1, u8vec2, u8vec3, u8vec4, umvec2, umvec3, umvec4, uvec1, uvec2, uvec3, uvec4, vec1, vec2, vec3, vec4)
_AT2 = TypeVar('_AT2', ctypes.c_bool, ctypes.c_byte, ctypes.c_int8, ctypes.c_ubyte, ctypes.c_uint8, ctypes.c_short, ctypes.c_int16, ctypes.c_ushort, ctypes.c_uint16, ctypes.c_int, ctypes.c_int32, ctypes.c_uint, ctypes.c_uint32, ctypes.c_long, ctypes.c_int64, ctypes.c_ulong, ctypes.c_uint64, ctypes.c_longlong, ctypes.c_ulonglong, ctypes.c_size_t, ctypes.c_ssize_t, ctypes.c_float, ctypes.c_double, ctypes.c_longdouble, dmat2x2, dmat2x3, dmat2x4, dmat3x2, dmat3x3, dmat3x4, dmat4x2, dmat4x3, dmat4x4, imat2x2, imat2x3, imat2x4, imat3x2, imat3x3, imat3x4, imat4x2, imat4x3, imat4x4, mat2x2, mat2x3, mat2x4, mat3x2, mat3x3, mat3x4, mat4x2, mat4x3, mat4x4, umat2x2, umat2x3, umat2x4, umat3x2, umat3x3, umat3x4, umat4x2, umat4x3, umat4x4, dquat, quat, bvec1, bvec2, bvec3, bvec4, dmvec2, dmvec3, dmvec4, dvec1, dvec2, dvec3, dvec4, i16vec1, i16vec2, i16vec3, i16vec4, i64vec1, i64vec2, i64vec3, i64vec4, i8vec1, i8vec2, i8vec3, i8vec4, imvec2, imvec3, imvec4, ivec1, ivec2, ivec3, ivec4, mvec2, mvec3, mvec4, u16vec1, u16vec2, u16vec3, u16vec4, u64vec1, u64vec2, u64vec3, u64vec4, u8vec1, u8vec2, u8vec3, u8vec4, umvec2, umvec3, umvec4, uvec1, uvec2, uvec3, uvec4, vec1, vec2, vec3, vec4)
_GLMT = TypeVar('_GLMT', dmat2x2, dmat2x3, dmat2x4, dmat3x2, dmat3x3, dmat3x4, dmat4x2, dmat4x3, dmat4x4, imat2x2, imat2x3, imat2x4, imat3x2, imat3x3, imat3x4, imat4x2, imat4x3, imat4x4, mat2x2, mat2x3, mat2x4, mat3x2, mat3x3, mat3x4, mat4x2, mat4x3, mat4x4, umat2x2, umat2x3, umat2x4, umat3x2, umat3x3, umat3x4, umat4x2, umat4x3, umat4x4, dquat, quat, bvec1, bvec2, bvec3, bvec4, dmvec2, dmvec3, dmvec4, dvec1, dvec2, dvec3, dvec4, i16vec1, i16vec2, i16vec3, i16vec4, i64vec1, i64vec2, i64vec3, i64vec4, i8vec1, i8vec2, i8vec3, i8vec4, imvec2, imvec3, imvec4, ivec1, ivec2, ivec3, ivec4, mvec2, mvec3, mvec4, u16vec1, u16vec2, u16vec3, u16vec4, u64vec1, u64vec2, u64vec3, u64vec4, u8vec1, u8vec2, u8vec3, u8vec4, umvec2, umvec3, umvec4, uvec1, uvec2, uvec3, uvec4, vec1, vec2, vec3, vec4)
_CT = TypeVar('_CT', ctypes.c_bool, ctypes.c_byte, ctypes.c_int8, ctypes.c_ubyte, ctypes.c_uint8, ctypes.c_short, ctypes.c_int16, ctypes.c_ushort, ctypes.c_uint16, ctypes.c_int, ctypes.c_int32, ctypes.c_uint, ctypes.c_uint32, ctypes.c_long, ctypes.c_int64, ctypes.c_ulong, ctypes.c_uint64, ctypes.c_longlong, ctypes.c_ulonglong, ctypes.c_size_t, ctypes.c_ssize_t, ctypes.c_float, ctypes.c_double, ctypes.c_longdouble)
_ICT = TypeVar('_ICT', ctypes.c_bool, ctypes.c_byte, ctypes.c_int8, ctypes.c_ubyte, ctypes.c_uint8, ctypes.c_short, ctypes.c_int16, ctypes.c_ushort, ctypes.c_uint16, ctypes.c_int, ctypes.c_int32, ctypes.c_uint, ctypes.c_uint32, ctypes.c_long, ctypes.c_int64, ctypes.c_ulong, ctypes.c_uint64, ctypes.c_longlong, ctypes.c_ulonglong, ctypes.c_size_t, ctypes.c_ssize_t)
_FCT = TypeVar('_FCT', ctypes.c_bool, ctypes.c_byte, ctypes.c_int8, ctypes.c_ubyte, ctypes.c_uint8, ctypes.c_short, ctypes.c_int16, ctypes.c_ushort, ctypes.c_uint16, ctypes.c_int, ctypes.c_int32, ctypes.c_uint, ctypes.c_uint32, ctypes.c_long, ctypes.c_int64, ctypes.c_ulong, ctypes.c_uint64, ctypes.c_longlong, ctypes.c_ulonglong, ctypes.c_size_t, ctypes.c_ssize_t)

class array(Generic[_AT]):

    nbytes: int
    typecode: str
    element_type: Type[_AT]
    itemsize: int
    dt_size: int
    address: int
    length: int
    readonly: bool
    reference: Any

    @property
    def ptr(self) -> ctypes.c_void_p: ...

    @property
    def dtype(self) -> str: ...

    @property
    def ctype(self) -> Type[Union[ctypes.c_bool, ctypes.c_byte, ctypes.c_int8, ctypes.c_ubyte, ctypes.c_uint8, ctypes.c_short, ctypes.c_int16, ctypes.c_ushort, ctypes.c_uint16, ctypes.c_int, ctypes.c_int32, ctypes.c_uint, ctypes.c_uint32, ctypes.c_long, ctypes.c_int64, ctypes.c_ulong, ctypes.c_uint64, ctypes.c_longlong, ctypes.c_ulonglong, ctypes.c_size_t, ctypes.c_ssize_t, ctypes.c_float, ctypes.c_double, ctypes.c_longdouble]]: ...

    @overload
    def __init__(self, _1: _AT, /, *_: _AT) -> None: ...
    @overload
    def __init__(self, _: array[_AT], /) -> None: ...
    @overload
    def __init__(self, _: Iterable[_AT], /) -> None: ...

    def __len__(self) -> int: ...
    def __contains__(self, value: Any) -> bool: ...

    @overload
    def __iter__(self: Union[array[ctypes.c_bool], array[ctypes.c_byte], array[ctypes.c_int8], array[ctypes.c_ubyte], array[ctypes.c_uint8], array[ctypes.c_short], array[ctypes.c_int16], array[ctypes.c_ushort], array[ctypes.c_uint16], array[ctypes.c_int], array[ctypes.c_int32], array[ctypes.c_uint], array[ctypes.c_uint32], array[ctypes.c_long], array[ctypes.c_int64], array[ctypes.c_ulong], array[ctypes.c_uint64], array[ctypes.c_longlong], array[ctypes.c_ulonglong], array[ctypes.c_size_t], array[ctypes.c_ssize_t]]) -> Generator[int, None, None]: ...
    @overload
    def __iter__(self: Union[array[ctypes.c_float], array[ctypes.c_double], array[ctypes.c_longdouble]]) -> Generator[float, None, None]: ...
    @overload
    def __iter__(self: array[_GLMT]) -> Generator[_AT, None, None]: ...

    @overload
    def __getitem__(self: Union[array[ctypes.c_bool], array[ctypes.c_byte], array[ctypes.c_int8], array[ctypes.c_ubyte], array[ctypes.c_uint8], array[ctypes.c_short], array[ctypes.c_int16], array[ctypes.c_ushort], array[ctypes.c_uint16], array[ctypes.c_int], array[ctypes.c_int32], array[ctypes.c_uint], array[ctypes.c_uint32], array[ctypes.c_long], array[ctypes.c_int64], array[ctypes.c_ulong], array[ctypes.c_uint64], array[ctypes.c_longlong], array[ctypes.c_ulonglong], array[ctypes.c_size_t], array[ctypes.c_ssize_t]], index: int) -> int: ...
    @overload
    def __getitem__(self: Union[array[ctypes.c_float], array[ctypes.c_double], array[ctypes.c_longdouble]], index: int) -> float: ...
    @overload
    def __getitem__(self: array[_GLMT], index: int) -> _AT: ...
    @overload
    def __getitem__(self, index: slice) -> array[_AT]: ...

    @overload
    def __setitem__(self: array[_ICT], index: int, value: _ICT) -> None: ...
    @overload
    def __setitem__(self: array[_FCT], index: int, value: _FCT) -> None: ...
    @overload
    def __setitem__(self: array[_GLMT], index: int, value: _AT) -> None: ...
    @overload
    def __setitem__(self, index: slice, value: array[_AT]) -> None: ...

    @staticmethod
    def from_bytes(bytes: bytes, type: Type[_AT], /) -> array[_AT]: ...

    @staticmethod
    def from_numbers(type: Type[_CT], /, *numbers: glm_typing.Number) -> array[_CT]: ...

    @staticmethod
    def zeros(length: int, type: Type[_AT], /) -> array[_AT]: ...

    @overload
    def to_list(self: array[_GLMT]) -> List[_GLMT]: ...
    @overload
    def to_list(self: Union[array[ctypes.c_bool], array[ctypes.c_byte], array[ctypes.c_int8], array[ctypes.c_ubyte], array[ctypes.c_uint8], array[ctypes.c_short], array[ctypes.c_int16], array[ctypes.c_ushort], array[ctypes.c_uint16], array[ctypes.c_int], array[ctypes.c_int32], array[ctypes.c_uint], array[ctypes.c_uint32], array[ctypes.c_long], array[ctypes.c_int64], array[ctypes.c_ulong], array[ctypes.c_uint64], array[ctypes.c_longlong], array[ctypes.c_ulonglong], array[ctypes.c_size_t], array[ctypes.c_ssize_t]]) -> List[int]: ...
    @overload
    def to_list(self: Union[array[ctypes.c_float], array[ctypes.c_double], array[ctypes.c_longdouble]]) -> List[float]: ...

    @overload
    def to_tuple(self: array[_GLMT]) -> Tuple[_GLMT, ...]: ...
    @overload
    def to_tuple(self: Union[array[ctypes.c_bool], array[ctypes.c_byte], array[ctypes.c_int8], array[ctypes.c_ubyte], array[ctypes.c_uint8], array[ctypes.c_short], array[ctypes.c_int16], array[ctypes.c_ushort], array[ctypes.c_uint16], array[ctypes.c_int], array[ctypes.c_int32], array[ctypes.c_uint], array[ctypes.c_uint32], array[ctypes.c_long], array[ctypes.c_int64], array[ctypes.c_ulong], array[ctypes.c_uint64], array[ctypes.c_longlong], array[ctypes.c_ulonglong], array[ctypes.c_size_t], array[ctypes.c_ssize_t]]) -> Tuple[int, ...]: ...
    @overload
    def to_tuple(self: Union[array[ctypes.c_float], array[ctypes.c_double], array[ctypes.c_longdouble]]) -> Tuple[float, ...]: ...

    @overload
    def split_components(self: array[bvec1]) -> Tuple[array[ctypes.c_bool]]: ...
    @overload
    def split_components(self: array[bvec2]) -> Tuple[array[ctypes.c_bool], array[ctypes.c_bool]]: ...
    @overload
    def split_components(self: array[bvec3]) -> Tuple[array[ctypes.c_bool], array[ctypes.c_bool], array[ctypes.c_bool]]: ...
    @overload
    def split_components(self: array[bvec4]) -> Tuple[array[ctypes.c_bool], array[ctypes.c_bool], array[ctypes.c_bool], array[ctypes.c_bool]]: ...
    @overload
    def split_components(self: array[dmvec2]) -> Tuple[array[ctypes.c_double], array[ctypes.c_double]]: ...
    @overload
    def split_components(self: array[dmvec3]) -> Tuple[array[ctypes.c_double], array[ctypes.c_double], array[ctypes.c_double]]: ...
    @overload
    def split_components(self: array[dmvec4]) -> Tuple[array[ctypes.c_double], array[ctypes.c_double], array[ctypes.c_double], array[ctypes.c_double]]: ...
    @overload
    def split_components(self: array[dvec1]) -> Tuple[array[ctypes.c_double]]: ...
    @overload
    def split_components(self: array[dvec2]) -> Tuple[array[ctypes.c_double], array[ctypes.c_double]]: ...
    @overload
    def split_components(self: array[dvec3]) -> Tuple[array[ctypes.c_double], array[ctypes.c_double], array[ctypes.c_double]]: ...
    @overload
    def split_components(self: array[dvec4]) -> Tuple[array[ctypes.c_double], array[ctypes.c_double], array[ctypes.c_double], array[ctypes.c_double]]: ...
    @overload
    def split_components(self: array[i16vec1]) -> Tuple[array[ctypes.c_short]]: ...
    @overload
    def split_components(self: array[i16vec2]) -> Tuple[array[ctypes.c_short], array[ctypes.c_short]]: ...
    @overload
    def split_components(self: array[i16vec3]) -> Tuple[array[ctypes.c_short], array[ctypes.c_short], array[ctypes.c_short]]: ...
    @overload
    def split_components(self: array[i16vec4]) -> Tuple[array[ctypes.c_short], array[ctypes.c_short], array[ctypes.c_short], array[ctypes.c_short]]: ...
    @overload
    def split_components(self: array[i64vec1]) -> Tuple[array[ctypes.c_longlong]]: ...
    @overload
    def split_components(self: array[i64vec2]) -> Tuple[array[ctypes.c_longlong], array[ctypes.c_longlong]]: ...
    @overload
    def split_components(self: array[i64vec3]) -> Tuple[array[ctypes.c_longlong], array[ctypes.c_longlong], array[ctypes.c_longlong]]: ...
    @overload
    def split_components(self: array[i64vec4]) -> Tuple[array[ctypes.c_longlong], array[ctypes.c_longlong], array[ctypes.c_longlong], array[ctypes.c_longlong]]: ...
    @overload
    def split_components(self: array[i8vec1]) -> Tuple[array[ctypes.c_byte]]: ...
    @overload
    def split_components(self: array[i8vec2]) -> Tuple[array[ctypes.c_byte], array[ctypes.c_byte]]: ...
    @overload
    def split_components(self: array[i8vec3]) -> Tuple[array[ctypes.c_byte], array[ctypes.c_byte], array[ctypes.c_byte]]: ...
    @overload
    def split_components(self: array[i8vec4]) -> Tuple[array[ctypes.c_byte], array[ctypes.c_byte], array[ctypes.c_byte], array[ctypes.c_byte]]: ...
    @overload
    def split_components(self: array[imvec2]) -> Tuple[array[ctypes.c_long], array[ctypes.c_long]]: ...
    @overload
    def split_components(self: array[imvec3]) -> Tuple[array[ctypes.c_long], array[ctypes.c_long], array[ctypes.c_long]]: ...
    @overload
    def split_components(self: array[imvec4]) -> Tuple[array[ctypes.c_long], array[ctypes.c_long], array[ctypes.c_long], array[ctypes.c_long]]: ...
    @overload
    def split_components(self: array[ivec1]) -> Tuple[array[ctypes.c_long]]: ...
    @overload
    def split_components(self: array[ivec2]) -> Tuple[array[ctypes.c_long], array[ctypes.c_long]]: ...
    @overload
    def split_components(self: array[ivec3]) -> Tuple[array[ctypes.c_long], array[ctypes.c_long], array[ctypes.c_long]]: ...
    @overload
    def split_components(self: array[ivec4]) -> Tuple[array[ctypes.c_long], array[ctypes.c_long], array[ctypes.c_long], array[ctypes.c_long]]: ...
    @overload
    def split_components(self: array[mvec2]) -> Tuple[array[ctypes.c_float], array[ctypes.c_float]]: ...
    @overload
    def split_components(self: array[mvec3]) -> Tuple[array[ctypes.c_float], array[ctypes.c_float], array[ctypes.c_float]]: ...
    @overload
    def split_components(self: array[mvec4]) -> Tuple[array[ctypes.c_float], array[ctypes.c_float], array[ctypes.c_float], array[ctypes.c_float]]: ...
    @overload
    def split_components(self: array[u16vec1]) -> Tuple[array[ctypes.c_ushort]]: ...
    @overload
    def split_components(self: array[u16vec2]) -> Tuple[array[ctypes.c_ushort], array[ctypes.c_ushort]]: ...
    @overload
    def split_components(self: array[u16vec3]) -> Tuple[array[ctypes.c_ushort], array[ctypes.c_ushort], array[ctypes.c_ushort]]: ...
    @overload
    def split_components(self: array[u16vec4]) -> Tuple[array[ctypes.c_ushort], array[ctypes.c_ushort], array[ctypes.c_ushort], array[ctypes.c_ushort]]: ...
    @overload
    def split_components(self: array[u64vec1]) -> Tuple[array[ctypes.c_ulonglong]]: ...
    @overload
    def split_components(self: array[u64vec2]) -> Tuple[array[ctypes.c_ulonglong], array[ctypes.c_ulonglong]]: ...
    @overload
    def split_components(self: array[u64vec3]) -> Tuple[array[ctypes.c_ulonglong], array[ctypes.c_ulonglong], array[ctypes.c_ulonglong]]: ...
    @overload
    def split_components(self: array[u64vec4]) -> Tuple[array[ctypes.c_ulonglong], array[ctypes.c_ulonglong], array[ctypes.c_ulonglong], array[ctypes.c_ulonglong]]: ...
    @overload
    def split_components(self: array[u8vec1]) -> Tuple[array[ctypes.c_ubyte]]: ...
    @overload
    def split_components(self: array[u8vec2]) -> Tuple[array[ctypes.c_ubyte], array[ctypes.c_ubyte]]: ...
    @overload
    def split_components(self: array[u8vec3]) -> Tuple[array[ctypes.c_ubyte], array[ctypes.c_ubyte], array[ctypes.c_ubyte]]: ...
    @overload
    def split_components(self: array[u8vec4]) -> Tuple[array[ctypes.c_ubyte], array[ctypes.c_ubyte], array[ctypes.c_ubyte], array[ctypes.c_ubyte]]: ...
    @overload
    def split_components(self: array[umvec2]) -> Tuple[array[ctypes.c_ulong], array[ctypes.c_ulong]]: ...
    @overload
    def split_components(self: array[umvec3]) -> Tuple[array[ctypes.c_ulong], array[ctypes.c_ulong], array[ctypes.c_ulong]]: ...
    @overload
    def split_components(self: array[umvec4]) -> Tuple[array[ctypes.c_ulong], array[ctypes.c_ulong], array[ctypes.c_ulong], array[ctypes.c_ulong]]: ...
    @overload
    def split_components(self: array[uvec1]) -> Tuple[array[ctypes.c_ulong]]: ...
    @overload
    def split_components(self: array[uvec2]) -> Tuple[array[ctypes.c_ulong], array[ctypes.c_ulong]]: ...
    @overload
    def split_components(self: array[uvec3]) -> Tuple[array[ctypes.c_ulong], array[ctypes.c_ulong], array[ctypes.c_ulong]]: ...
    @overload
    def split_components(self: array[uvec4]) -> Tuple[array[ctypes.c_ulong], array[ctypes.c_ulong], array[ctypes.c_ulong], array[ctypes.c_ulong]]: ...
    @overload
    def split_components(self: array[vec1]) -> Tuple[array[ctypes.c_float]]: ...
    @overload
    def split_components(self: array[vec2]) -> Tuple[array[ctypes.c_float], array[ctypes.c_float]]: ...
    @overload
    def split_components(self: array[vec3]) -> Tuple[array[ctypes.c_float], array[ctypes.c_float], array[ctypes.c_float]]: ...
    @overload
    def split_components(self: array[vec4]) -> Tuple[array[ctypes.c_float], array[ctypes.c_float], array[ctypes.c_float], array[ctypes.c_float]]: ...
    @overload
    def split_components(self: array[dquat]) -> Tuple[array[ctypes.c_double], array[ctypes.c_double], array[ctypes.c_double], array[ctypes.c_double]]: ...
    @overload
    def split_components(self: array[quat]) -> Tuple[array[ctypes.c_float], array[ctypes.c_float], array[ctypes.c_float], array[ctypes.c_float]]: ...
    @overload
    def split_components(self: array[dmat2x2]) -> Tuple[array[dvec2], array[dvec2]]: ...
    @overload
    def split_components(self: array[dmat2x3]) -> Tuple[array[dvec3], array[dvec3]]: ...
    @overload
    def split_components(self: array[dmat2x4]) -> Tuple[array[dvec4], array[dvec4]]: ...
    @overload
    def split_components(self: array[dmat3x2]) -> Tuple[array[dvec2], array[dvec2], array[dvec2]]: ...
    @overload
    def split_components(self: array[dmat3x3]) -> Tuple[array[dvec3], array[dvec3], array[dvec3]]: ...
    @overload
    def split_components(self: array[dmat3x4]) -> Tuple[array[dvec4], array[dvec4], array[dvec4]]: ...
    @overload
    def split_components(self: array[dmat4x2]) -> Tuple[array[dvec2], array[dvec2], array[dvec2], array[dvec2]]: ...
    @overload
    def split_components(self: array[dmat4x3]) -> Tuple[array[dvec3], array[dvec3], array[dvec3], array[dvec3]]: ...
    @overload
    def split_components(self: array[dmat4x4]) -> Tuple[array[dvec4], array[dvec4], array[dvec4], array[dvec4]]: ...
    @overload
    def split_components(self: array[imat2x2]) -> Tuple[array[ivec2], array[ivec2]]: ...
    @overload
    def split_components(self: array[imat2x3]) -> Tuple[array[ivec3], array[ivec3]]: ...
    @overload
    def split_components(self: array[imat2x4]) -> Tuple[array[ivec4], array[ivec4]]: ...
    @overload
    def split_components(self: array[imat3x2]) -> Tuple[array[ivec2], array[ivec2], array[ivec2]]: ...
    @overload
    def split_components(self: array[imat3x3]) -> Tuple[array[ivec3], array[ivec3], array[ivec3]]: ...
    @overload
    def split_components(self: array[imat3x4]) -> Tuple[array[ivec4], array[ivec4], array[ivec4]]: ...
    @overload
    def split_components(self: array[imat4x2]) -> Tuple[array[ivec2], array[ivec2], array[ivec2], array[ivec2]]: ...
    @overload
    def split_components(self: array[imat4x3]) -> Tuple[array[ivec3], array[ivec3], array[ivec3], array[ivec3]]: ...
    @overload
    def split_components(self: array[imat4x4]) -> Tuple[array[ivec4], array[ivec4], array[ivec4], array[ivec4]]: ...
    @overload
    def split_components(self: array[mat2x2]) -> Tuple[array[vec2], array[vec2]]: ...
    @overload
    def split_components(self: array[mat2x3]) -> Tuple[array[vec3], array[vec3]]: ...
    @overload
    def split_components(self: array[mat2x4]) -> Tuple[array[vec4], array[vec4]]: ...
    @overload
    def split_components(self: array[mat3x2]) -> Tuple[array[vec2], array[vec2], array[vec2]]: ...
    @overload
    def split_components(self: array[mat3x3]) -> Tuple[array[vec3], array[vec3], array[vec3]]: ...
    @overload
    def split_components(self: array[mat3x4]) -> Tuple[array[vec4], array[vec4], array[vec4]]: ...
    @overload
    def split_components(self: array[mat4x2]) -> Tuple[array[vec2], array[vec2], array[vec2], array[vec2]]: ...
    @overload
    def split_components(self: array[mat4x3]) -> Tuple[array[vec3], array[vec3], array[vec3], array[vec3]]: ...
    @overload
    def split_components(self: array[mat4x4]) -> Tuple[array[vec4], array[vec4], array[vec4], array[vec4]]: ...
    @overload
    def split_components(self: array[umat2x2]) -> Tuple[array[uvec2], array[uvec2]]: ...
    @overload
    def split_components(self: array[umat2x3]) -> Tuple[array[uvec3], array[uvec3]]: ...
    @overload
    def split_components(self: array[umat2x4]) -> Tuple[array[uvec4], array[uvec4]]: ...
    @overload
    def split_components(self: array[umat3x2]) -> Tuple[array[uvec2], array[uvec2], array[uvec2]]: ...
    @overload
    def split_components(self: array[umat3x3]) -> Tuple[array[uvec3], array[uvec3], array[uvec3]]: ...
    @overload
    def split_components(self: array[umat3x4]) -> Tuple[array[uvec4], array[uvec4], array[uvec4]]: ...
    @overload
    def split_components(self: array[umat4x2]) -> Tuple[array[uvec2], array[uvec2], array[uvec2], array[uvec2]]: ...
    @overload
    def split_components(self: array[umat4x3]) -> Tuple[array[uvec3], array[uvec3], array[uvec3], array[uvec3]]: ...
    @overload
    def split_components(self: array[umat4x4]) -> Tuple[array[uvec4], array[uvec4], array[uvec4], array[uvec4]]: ...

    def to_bytes(self) -> bytes: ...

    def reduce(self, func: Callable[[_AT, _AT], _AT], init: Optional[_AT] = ..., /) -> _AT: ...
    def filter(self, _: Callable[[_AT], Any], /) -> array[_AT]: ...
    def map(self, _: Callable[[_AT], _AT2], /) -> array[_AT2]: ...
    def sort(self, _: Callable[[_AT], SupportsInt], /) -> array[_AT]: ...
    def concat(self, other: array[_AT], /) -> array[_AT]: ...
    def iconcat(self, other: array[_AT], /) -> None: ...
    def repeat(self, count: int, /) -> array[_AT]: ...
    def irepeat(self, count: int, /) -> None: ...

    @overload
    @staticmethod
    def as_reference(array: array[_AT], /) -> array[_AT]: ...
    @overload
    @staticmethod
    def as_reference(obj: _GLMT, /) -> array[_GLMT]: ...

    def reinterpret_cast(self, type: Type[_AT], /) -> array[_AT]: ...

    def __eq__(self, other: Any) -> bool: ...
    def __ne__(self, other: Any) -> bool: ...

    def __add__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __radd__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __iadd__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __sub__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __rsub__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __isub__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __mul__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __rmul__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __imul__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __mod__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __rmod__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __imod__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __pow__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __rpow__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __ipow__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __lshift__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __rlshift__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __ilshift__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __rshift__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __rrshift__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __irshift__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __and__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __rand__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __iand__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __xor__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __rxor__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __ixor__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __or__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __ror__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __ior__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __truediv__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __rtruediv__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...
    def __itruediv__(self, other: Union[glm_typing.Number, _AT, array[_AT]]) -> array[_AT]: ...

    def __neg__(self) -> array[_AT]: ...
    def __pos__(self) -> array[_AT]: ...
    def __abs__(self) -> array[_AT]: ...
    def __inv__(self) -> array[_AT]: ...


@overload
def abs(x: glm_typing.Number, /) -> float: ...
@overload
def abs(x: Tuple[glm_typing.Number], /) -> vec1: ...
@overload
def abs(x: Tuple[glm_typing.Number, glm_typing.Number], /) -> vec2: ...
@overload
def abs(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec3: ...
@overload
def abs(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec4: ...
@overload
def abs(x: _VT, /) -> _VT: ...

@overload
def ceil(x: glm_typing.Number, /) -> float: ...
@overload
def ceil(x: Tuple[glm_typing.Number], /) -> vec1: ...
@overload
def ceil(x: Tuple[glm_typing.Number, glm_typing.Number], /) -> vec2: ...
@overload
def ceil(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec3: ...
@overload
def ceil(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec4: ...
@overload
def ceil(x: _VT, /) -> _VT: ...

@overload
def clamp(x: glm_typing.Number, min: glm_typing.Number, max: glm_typing.Number, /) -> glm_typing.Number: ...
@overload
def clamp(x: glm_typing.F32Vector1, min: glm_typing.Number, max: glm_typing.Number, /) -> vec1: ...
@overload
def clamp(x: glm_typing.F32Vector1, min: glm_typing.F32Vector1, max: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def clamp(x: glm_typing.F32Vector2, min: glm_typing.Number, max: glm_typing.Number, /) -> vec2: ...
@overload
def clamp(x: glm_typing.F32Vector2, min: glm_typing.F32Vector2, max: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def clamp(x: glm_typing.F32Vector3, min: glm_typing.Number, max: glm_typing.Number, /) -> vec3: ...
@overload
def clamp(x: glm_typing.F32Vector3, min: glm_typing.F32Vector3, max: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def clamp(x: glm_typing.F32Vector4, min: glm_typing.Number, max: glm_typing.Number, /) -> vec4: ...
@overload
def clamp(x: glm_typing.F32Vector4, min: glm_typing.F32Vector4, max: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def clamp(x: _NF32VT, min: glm_typing.Number, max: glm_typing.Number, /) -> _NF32VT: ...
@overload
def clamp(x: _NF32VT, min: _NF32VT, max: _NF32VT, /) -> _NF32VT: ...

@overload
def floatBitsToInt(x: float, /) -> int: ...
@overload
def floatBitsToInt(x: glm_typing.F32Vector2, /) -> ivec2: ...
@overload
def floatBitsToInt(x: glm_typing.F32Vector3, /) -> ivec3: ...
@overload
def floatBitsToInt(x: glm_typing.F32Vector4, /) -> ivec4: ...
@overload
def floatBitsToInt(x: glm_typing.F32Vector1, /) -> ivec1: ...

@overload
def floatBitsToUint(x: float, /) -> int: ...
@overload
def floatBitsToUint(x: glm_typing.F32Vector2, /) -> uvec2: ...
@overload
def floatBitsToUint(x: glm_typing.F32Vector3, /) -> uvec3: ...
@overload
def floatBitsToUint(x: glm_typing.F32Vector4, /) -> uvec4: ...
@overload
def floatBitsToUint(x: glm_typing.F32Vector1, /) -> uvec1: ...

@overload
def floor(x: glm_typing.Number, /) -> float: ...
@overload
def floor(x: Tuple[glm_typing.Number], /) -> vec1: ...
@overload
def floor(x: Tuple[glm_typing.Number, glm_typing.Number], /) -> vec2: ...
@overload
def floor(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec3: ...
@overload
def floor(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec4: ...
@overload
def floor(x: _VT, /) -> _VT: ...

def fma(a: glm_typing.Number, b: glm_typing.Number, c: glm_typing.Number, /) -> float: ...

@overload
def fmax(x: glm_typing.Number, y: glm_typing.Number, /) -> float: ...
@overload
def fmax(a: glm_typing.Number, b: glm_typing.Number, c: glm_typing.Number, /) -> float: ...
@overload
def fmax(a: glm_typing.Number, b: glm_typing.Number, c: glm_typing.Number, d: glm_typing.Number, /) -> float: ...
@overload
def fmax(x: glm_typing.F32Vector1, y: glm_typing.Number, /) -> vec1: ...
@overload
def fmax(x: glm_typing.F32Vector1, y: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def fmax(a: glm_typing.F32Vector1, b: glm_typing.F32Vector1, c: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def fmax(a: glm_typing.F32Vector1, b: glm_typing.F32Vector1, c: glm_typing.F32Vector1, d: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def fmax(x: glm_typing.F32Vector2, y: glm_typing.Number, /) -> vec2: ...
@overload
def fmax(x: glm_typing.F32Vector2, y: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def fmax(a: glm_typing.F32Vector2, b: glm_typing.F32Vector2, c: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def fmax(a: glm_typing.F32Vector2, b: glm_typing.F32Vector2, c: glm_typing.F32Vector2, d: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def fmax(x: glm_typing.F32Vector3, y: glm_typing.Number, /) -> vec3: ...
@overload
def fmax(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def fmax(a: glm_typing.F32Vector3, b: glm_typing.F32Vector3, c: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def fmax(a: glm_typing.F32Vector3, b: glm_typing.F32Vector3, c: glm_typing.F32Vector3, d: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def fmax(x: glm_typing.F32Vector4, y: glm_typing.Number, /) -> vec4: ...
@overload
def fmax(x: glm_typing.F32Vector4, y: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def fmax(a: glm_typing.F32Vector4, b: glm_typing.F32Vector4, c: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def fmax(a: glm_typing.F32Vector4, b: glm_typing.F32Vector4, c: glm_typing.F32Vector4, d: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def fmax(x: _NF32VT, y: glm_typing.Number, /) -> _NF32VT: ...
@overload
def fmax(x: _NF32VT, y: _NF32VT, /) -> _NF32VT: ...
@overload
def fmax(a: _NF32VT, b: _NF32VT, c: _NF32VT, /) -> _NF32VT: ...
@overload
def fmax(a: _NF32VT, b: _NF32VT, c: _NF32VT, d: _NF32VT, /) -> _NF32VT: ...

@overload
def fmin(x: glm_typing.Number, y: glm_typing.Number, /) -> float: ...
@overload
def fmin(a: glm_typing.Number, b: glm_typing.Number, c: glm_typing.Number, /) -> float: ...
@overload
def fmin(a: glm_typing.Number, b: glm_typing.Number, c: glm_typing.Number, d: glm_typing.Number, /) -> float: ...
@overload
def fmin(x: glm_typing.F32Vector1, y: glm_typing.Number, /) -> vec1: ...
@overload
def fmin(x: glm_typing.F32Vector1, y: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def fmin(a: glm_typing.F32Vector1, b: glm_typing.F32Vector1, c: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def fmin(a: glm_typing.F32Vector1, b: glm_typing.F32Vector1, c: glm_typing.F32Vector1, d: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def fmin(x: glm_typing.F32Vector2, y: glm_typing.Number, /) -> vec2: ...
@overload
def fmin(x: glm_typing.F32Vector2, y: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def fmin(a: glm_typing.F32Vector2, b: glm_typing.F32Vector2, c: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def fmin(a: glm_typing.F32Vector2, b: glm_typing.F32Vector2, c: glm_typing.F32Vector2, d: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def fmin(x: glm_typing.F32Vector3, y: glm_typing.Number, /) -> vec3: ...
@overload
def fmin(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def fmin(a: glm_typing.F32Vector3, b: glm_typing.F32Vector3, c: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def fmin(a: glm_typing.F32Vector3, b: glm_typing.F32Vector3, c: glm_typing.F32Vector3, d: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def fmin(x: glm_typing.F32Vector4, y: glm_typing.Number, /) -> vec4: ...
@overload
def fmin(x: glm_typing.F32Vector4, y: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def fmin(a: glm_typing.F32Vector4, b: glm_typing.F32Vector4, c: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def fmin(a: glm_typing.F32Vector4, b: glm_typing.F32Vector4, c: glm_typing.F32Vector4, d: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def fmin(x: _NF32VT, y: glm_typing.Number, /) -> _NF32VT: ...
@overload
def fmin(x: _NF32VT, y: _NF32VT, /) -> _NF32VT: ...
@overload
def fmin(a: _NF32VT, b: _NF32VT, c: _NF32VT, /) -> _NF32VT: ...
@overload
def fmin(a: _NF32VT, b: _NF32VT, c: _NF32VT, d: _NF32VT, /) -> _NF32VT: ...

@overload
def fract(x: glm_typing.Number, /) -> float: ...
@overload
def fract(x: Tuple[glm_typing.Number], /) -> vec1: ...
@overload
def fract(x: Tuple[glm_typing.Number, glm_typing.Number], /) -> vec2: ...
@overload
def fract(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec3: ...
@overload
def fract(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec4: ...
@overload
def fract(x: _VT, /) -> _VT: ...

@overload
def frexp(x: glm_typing.Number, /) -> Tuple[float, int]: ...
@overload
def frexp(x: dvec1, exp: ivec1, /) -> dvec1: ...
@overload
def frexp(x: dvec2, exp: ivec2, /) -> dvec2: ...
@overload
def frexp(x: dvec3, exp: ivec3, /) -> dvec3: ...
@overload
def frexp(x: dvec4, exp: ivec4, /) -> dvec4: ...
@overload
def frexp(x: glm_typing.F32Vector1, exp: ivec1, /) -> vec1: ...
@overload
def frexp(x: glm_typing.F32Vector2, exp: ivec2, /) -> vec2: ...
@overload
def frexp(x: glm_typing.F32Vector3, exp: ivec3, /) -> vec3: ...
@overload
def frexp(x: glm_typing.F32Vector4, exp: ivec4, /) -> vec4: ...

@overload
def intBitsToFloat(x: int, /) -> float: ...
@overload
def intBitsToFloat(x: glm_typing.I32Vector2, /) -> vec2: ...
@overload
def intBitsToFloat(x: glm_typing.I32Vector3, /) -> vec3: ...
@overload
def intBitsToFloat(x: glm_typing.I32Vector4, /) -> vec4: ...
@overload
def intBitsToFloat(x: glm_typing.I32Vector1, /) -> vec1: ...

@overload
def isinf(x: glm_typing.Number, /) -> bool: ...
@overload
def isinf(x: glm_typing.FDAnyVector1, /) -> bvec1: ...
@overload
def isinf(x: glm_typing.FDAnyVector2, /) -> bvec2: ...
@overload
def isinf(x: glm_typing.FDAnyVector3, /) -> bvec3: ...
@overload
def isinf(x: glm_typing.FDAnyQuaternionVector4, /) -> bvec4: ...

@overload
def isnan(x: glm_typing.Number, /) -> bool: ...
@overload
def isnan(x: glm_typing.FDAnyVector1, /) -> bvec1: ...
@overload
def isnan(x: glm_typing.FDAnyVector2, /) -> bvec2: ...
@overload
def isnan(x: glm_typing.FDAnyVector3, /) -> bvec3: ...
@overload
def isnan(x: glm_typing.FDAnyQuaternionVector4, /) -> bvec4: ...

@overload
def ldexp(x: glm_typing.Number, exp: glm_typing.Number, /) -> float: ...
@overload
def ldexp(x: dmvec2, exp: ivec2, /) -> dmvec2: ...
@overload
def ldexp(x: dmvec3, exp: ivec3, /) -> dmvec3: ...
@overload
def ldexp(x: dmvec4, exp: ivec4, /) -> dmvec4: ...
@overload
def ldexp(x: dvec1, exp: ivec1, /) -> dvec1: ...
@overload
def ldexp(x: dvec2, exp: ivec2, /) -> dvec2: ...
@overload
def ldexp(x: dvec3, exp: ivec3, /) -> dvec3: ...
@overload
def ldexp(x: dvec4, exp: ivec4, /) -> dvec4: ...
@overload
def ldexp(x: mvec2, exp: ivec2, /) -> mvec2: ...
@overload
def ldexp(x: mvec3, exp: ivec3, /) -> mvec3: ...
@overload
def ldexp(x: mvec4, exp: ivec4, /) -> mvec4: ...
@overload
def ldexp(x: Union[vec1, Tuple[glm_typing.Number]], exp: ivec1, /) -> vec1: ...
@overload
def ldexp(x: Union[vec2, Tuple[glm_typing.Number, glm_typing.Number]], exp: ivec2, /) -> vec2: ...
@overload
def ldexp(x: Union[vec3, Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number]], exp: ivec3, /) -> vec3: ...
@overload
def ldexp(x: Union[vec4, Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number, glm_typing.Number]], exp: ivec4, /) -> vec4: ...

@overload
def max(x: glm_typing.Number, y: glm_typing.Number, /) -> float: ...
@overload
def max(a: glm_typing.Number, b: glm_typing.Number, c: glm_typing.Number, /) -> float: ...
@overload
def max(a: glm_typing.Number, b: glm_typing.Number, c: glm_typing.Number, d: glm_typing.Number, /) -> float: ...
@overload
def max(x: glm_typing.F32Vector1, y: glm_typing.Number, /) -> vec1: ...
@overload
def max(x: glm_typing.F32Vector1, y: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def max(a: glm_typing.F32Vector1, b: glm_typing.F32Vector1, c: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def max(a: glm_typing.F32Vector1, b: glm_typing.F32Vector1, c: glm_typing.F32Vector1, d: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def max(x: glm_typing.F32Vector2, y: glm_typing.Number, /) -> vec2: ...
@overload
def max(x: glm_typing.F32Vector2, y: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def max(a: glm_typing.F32Vector2, b: glm_typing.F32Vector2, c: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def max(a: glm_typing.F32Vector2, b: glm_typing.F32Vector2, c: glm_typing.F32Vector2, d: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def max(x: glm_typing.F32Vector3, y: glm_typing.Number, /) -> vec3: ...
@overload
def max(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def max(a: glm_typing.F32Vector3, b: glm_typing.F32Vector3, c: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def max(a: glm_typing.F32Vector3, b: glm_typing.F32Vector3, c: glm_typing.F32Vector3, d: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def max(x: glm_typing.F32Vector4, y: glm_typing.Number, /) -> vec4: ...
@overload
def max(x: glm_typing.F32Vector4, y: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def max(a: glm_typing.F32Vector4, b: glm_typing.F32Vector4, c: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def max(a: glm_typing.F32Vector4, b: glm_typing.F32Vector4, c: glm_typing.F32Vector4, d: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def max(x: _NF32VT, y: glm_typing.Number, /) -> _NF32VT: ...
@overload
def max(x: _NF32VT, y: _NF32VT, /) -> _NF32VT: ...
@overload
def max(a: _NF32VT, b: _NF32VT, c: _NF32VT, /) -> _NF32VT: ...
@overload
def max(a: _NF32VT, b: _NF32VT, c: _NF32VT, d: _NF32VT, /) -> _NF32VT: ...
@overload
def max(_: Iterable[_T], /) -> _T: ...

@overload
def min(x: glm_typing.Number, y: glm_typing.Number, /) -> float: ...
@overload
def min(a: glm_typing.Number, b: glm_typing.Number, c: glm_typing.Number, /) -> float: ...
@overload
def min(a: glm_typing.Number, b: glm_typing.Number, c: glm_typing.Number, d: glm_typing.Number, /) -> float: ...
@overload
def min(x: glm_typing.F32Vector1, y: glm_typing.Number, /) -> vec1: ...
@overload
def min(x: glm_typing.F32Vector1, y: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def min(a: glm_typing.F32Vector1, b: glm_typing.F32Vector1, c: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def min(a: glm_typing.F32Vector1, b: glm_typing.F32Vector1, c: glm_typing.F32Vector1, d: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def min(x: glm_typing.F32Vector2, y: glm_typing.Number, /) -> vec2: ...
@overload
def min(x: glm_typing.F32Vector2, y: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def min(a: glm_typing.F32Vector2, b: glm_typing.F32Vector2, c: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def min(a: glm_typing.F32Vector2, b: glm_typing.F32Vector2, c: glm_typing.F32Vector2, d: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def min(x: glm_typing.F32Vector3, y: glm_typing.Number, /) -> vec3: ...
@overload
def min(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def min(a: glm_typing.F32Vector3, b: glm_typing.F32Vector3, c: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def min(a: glm_typing.F32Vector3, b: glm_typing.F32Vector3, c: glm_typing.F32Vector3, d: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def min(x: glm_typing.F32Vector4, y: glm_typing.Number, /) -> vec4: ...
@overload
def min(x: glm_typing.F32Vector4, y: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def min(a: glm_typing.F32Vector4, b: glm_typing.F32Vector4, c: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def min(a: glm_typing.F32Vector4, b: glm_typing.F32Vector4, c: glm_typing.F32Vector4, d: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def min(x: _NF32VT, y: glm_typing.Number, /) -> _NF32VT: ...
@overload
def min(x: _NF32VT, y: _NF32VT, /) -> _NF32VT: ...
@overload
def min(a: _NF32VT, b: _NF32VT, c: _NF32VT, /) -> _NF32VT: ...
@overload
def min(a: _NF32VT, b: _NF32VT, c: _NF32VT, d: _NF32VT, /) -> _NF32VT: ...
@overload
def min(_: Iterable[_T], /) -> _T: ...

@overload
def mix(x: glm_typing.Number, y: glm_typing.Number, a: glm_typing.Number, /) -> float: ...
@overload
def mix(x: glm_typing.F32Vector1, y: glm_typing.F32Vector1, a: Union[glm_typing.FDAnyVector1, glm_typing.BAnyVector1, glm_typing.Number], /) -> vec1: ...
@overload
def mix(x: _NF32V1T, y: _NF32V1T, a: Union[glm_typing.FDAnyVector1, glm_typing.BAnyVector1, glm_typing.Number], /) -> _NF32V1T: ...
@overload
def mix(x: glm_typing.F32Vector2, y: glm_typing.F32Vector2, a: Union[glm_typing.FDAnyVector2, glm_typing.BAnyVector2, glm_typing.Number], /) -> vec2: ...
@overload
def mix(x: _NF32V2T, y: _NF32V2T, a: Union[glm_typing.FDAnyVector2, glm_typing.BAnyVector2, glm_typing.Number], /) -> _NF32V2T: ...
@overload
def mix(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, a: Union[glm_typing.FDAnyVector3, glm_typing.BAnyVector3, glm_typing.Number], /) -> vec3: ...
@overload
def mix(x: _NF32V3T, y: _NF32V3T, a: Union[glm_typing.FDAnyVector3, glm_typing.BAnyVector3, glm_typing.Number], /) -> _NF32V3T: ...
@overload
def mix(x: glm_typing.F32Vector4, y: glm_typing.F32Vector4, a: Union[glm_typing.FDAnyVector4, glm_typing.BAnyVector4, glm_typing.Number], /) -> vec4: ...
@overload
def mix(x: _NF32V4T, y: _NF32V4T, a: Union[glm_typing.FDAnyVector4, glm_typing.BAnyVector4, glm_typing.Number], /) -> _NF32V4T: ...
@overload
def mix(x: glm_typing.F32Matrix2x2, y: glm_typing.F32Matrix2x2, a: Union[glm_typing.FAnyMatrix2x2, glm_typing.Number], /) -> mat2x2: ...
@overload
def mix(x: _NF32M2X2T, y: _NF32M2X2T, a: Union[glm_typing.FAnyMatrix2x2, glm_typing.Number], /) -> _NF32M2X2T: ...
@overload
def mix(x: glm_typing.F32Matrix2x3, y: glm_typing.F32Matrix2x3, a: Union[glm_typing.FAnyMatrix2x3, glm_typing.Number], /) -> mat2x3: ...
@overload
def mix(x: _NF32M2X3T, y: _NF32M2X3T, a: Union[glm_typing.FAnyMatrix2x3, glm_typing.Number], /) -> _NF32M2X3T: ...
@overload
def mix(x: glm_typing.F32Matrix2x4, y: glm_typing.F32Matrix2x4, a: Union[glm_typing.FAnyMatrix2x4, glm_typing.Number], /) -> mat2x4: ...
@overload
def mix(x: _NF32M2X4T, y: _NF32M2X4T, a: Union[glm_typing.FAnyMatrix2x4, glm_typing.Number], /) -> _NF32M2X4T: ...
@overload
def mix(x: glm_typing.F32Matrix3x2, y: glm_typing.F32Matrix3x2, a: Union[glm_typing.FAnyMatrix3x2, glm_typing.Number], /) -> mat3x2: ...
@overload
def mix(x: _NF32M3X2T, y: _NF32M3X2T, a: Union[glm_typing.FAnyMatrix3x2, glm_typing.Number], /) -> _NF32M3X2T: ...
@overload
def mix(x: glm_typing.F32Matrix3x3, y: glm_typing.F32Matrix3x3, a: Union[glm_typing.FAnyMatrix3x3, glm_typing.Number], /) -> mat3x3: ...
@overload
def mix(x: _NF32M3X3T, y: _NF32M3X3T, a: Union[glm_typing.FAnyMatrix3x3, glm_typing.Number], /) -> _NF32M3X3T: ...
@overload
def mix(x: glm_typing.F32Matrix3x4, y: glm_typing.F32Matrix3x4, a: Union[glm_typing.FAnyMatrix3x4, glm_typing.Number], /) -> mat3x4: ...
@overload
def mix(x: _NF32M3X4T, y: _NF32M3X4T, a: Union[glm_typing.FAnyMatrix3x4, glm_typing.Number], /) -> _NF32M3X4T: ...
@overload
def mix(x: glm_typing.F32Matrix4x2, y: glm_typing.F32Matrix4x2, a: Union[glm_typing.FAnyMatrix4x2, glm_typing.Number], /) -> mat4x2: ...
@overload
def mix(x: _NF32M4X2T, y: _NF32M4X2T, a: Union[glm_typing.FAnyMatrix4x2, glm_typing.Number], /) -> _NF32M4X2T: ...
@overload
def mix(x: glm_typing.F32Matrix4x3, y: glm_typing.F32Matrix4x3, a: Union[glm_typing.FAnyMatrix4x3, glm_typing.Number], /) -> mat4x3: ...
@overload
def mix(x: _NF32M4X3T, y: _NF32M4X3T, a: Union[glm_typing.FAnyMatrix4x3, glm_typing.Number], /) -> _NF32M4X3T: ...
@overload
def mix(x: glm_typing.F32Matrix4x4, y: glm_typing.F32Matrix4x4, a: Union[glm_typing.FAnyMatrix4x4, glm_typing.Number], /) -> mat4x4: ...
@overload
def mix(x: _NF32M4X4T, y: _NF32M4X4T, a: Union[glm_typing.FAnyMatrix4x4, glm_typing.Number], /) -> _NF32M4X4T: ...
@overload
def mix(x: _QT, y: _QT, a: glm_typing.Number, /) -> _QT: ...

@overload
def modf(x: glm_typing.Number, /) -> Tuple[float, float]: ...
@overload
def modf(x: Tuple[glm_typing.Number], /) -> vec1: ...
@overload
def modf(x: Tuple[glm_typing.Number, glm_typing.Number], /) -> vec2: ...
@overload
def modf(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec3: ...
@overload
def modf(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec4: ...
@overload
def modf(x: _FDVT, i: _FDVT, /) -> _FDVT: ...

@overload
def round(x: glm_typing.Number, /) -> float: ...
@overload
def round(x: Tuple[glm_typing.Number], /) -> vec1: ...
@overload
def round(x: Tuple[glm_typing.Number, glm_typing.Number], /) -> vec2: ...
@overload
def round(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec3: ...
@overload
def round(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec4: ...
@overload
def round(x: _FDVT, i: _FDVT, /) -> _FDVT: ...

@overload
def roundEven(x: glm_typing.Number, /) -> float: ...
@overload
def roundEven(x: Tuple[glm_typing.Number], /) -> vec1: ...
@overload
def roundEven(x: Tuple[glm_typing.Number, glm_typing.Number], /) -> vec2: ...
@overload
def roundEven(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec3: ...
@overload
def roundEven(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec4: ...
@overload
def roundEven(x: _FDVT, i: _FDVT, /) -> _FDVT: ...

@overload
def sign(x: glm_typing.Number, /) -> float: ...
@overload
def sign(x: Tuple[glm_typing.Number], /) -> vec1: ...
@overload
def sign(x: Tuple[glm_typing.Number, glm_typing.Number], /) -> vec2: ...
@overload
def sign(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec3: ...
@overload
def sign(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec4: ...
@overload
def sign(x: _FDVT, i: _FDVT, /) -> _FDVT: ...

@overload
def smoothstep(edge0: glm_typing.Number, edge1: glm_typing.Number, x: glm_typing.Number, /) -> float: ...
@overload
def smoothstep(edge0: glm_typing.Number, edge1: glm_typing.Number, x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def smoothstep(edge0: glm_typing.F32Vector1, edge1: glm_typing.F32Vector1, x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def smoothstep(edge0: glm_typing.Number, edge1: glm_typing.Number, x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def smoothstep(edge0: glm_typing.F32Vector2, edge1: glm_typing.F32Vector2, x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def smoothstep(edge0: glm_typing.Number, edge1: glm_typing.Number, x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def smoothstep(edge0: glm_typing.F32Vector3, edge1: glm_typing.F32Vector3, x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def smoothstep(edge0: glm_typing.Number, edge1: glm_typing.Number, x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def smoothstep(edge0: glm_typing.F32Vector4, edge1: glm_typing.F32Vector4, x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def smoothstep(edge0: glm_typing.Number, edge1: glm_typing.Number, x: _NF32VT, /) -> _FDVT: ...
@overload
def smoothstep(edge0: _NF32VT, edge1: _NF32VT, x: _NF32VT, /) -> _NF32VT: ...

@overload
def step(edge: glm_typing.Number, x: glm_typing.Number, /) -> float: ...
@overload
def step(edge: glm_typing.Number, x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def step(edge: glm_typing.F32Vector1, x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def step(edge: glm_typing.Number, x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def step(edge: glm_typing.F32Vector2, x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def step(edge: glm_typing.Number, x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def step(edge: glm_typing.F32Vector3, x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def step(edge: glm_typing.Number, x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def step(edge: glm_typing.F32Vector4, x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def step(edge: glm_typing.Number, x: _NF32VT, /) -> _NF32VT: ...
@overload
def step(edge: _NF32VT, x: _NF32VT, /) -> _NF32VT: ...

@overload
def trunc(x: glm_typing.Number, /) -> float: ...
@overload
def trunc(x: Tuple[glm_typing.Number], /) -> vec1: ...
@overload
def trunc(x: Tuple[glm_typing.Number, glm_typing.Number], /) -> vec2: ...
@overload
def trunc(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec3: ...
@overload
def trunc(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec4: ...
@overload
def trunc(x: _FDVT, /) -> _FDVT: ...

@overload
def uintBitsToFloat(x: int, /) -> float: ...
@overload
def uintBitsToFloat(x: glm_typing.U32Vector2, /) -> vec2: ...
@overload
def uintBitsToFloat(x: glm_typing.U32Vector3, /) -> vec3: ...
@overload
def uintBitsToFloat(x: glm_typing.U32Vector4, /) -> vec4: ...
@overload
def uintBitsToFloat(x: glm_typing.U32Vector1, /) -> vec1: ...


@overload
def exp(x: glm_typing.Number, /) -> float: ...
@overload
def exp(x: Tuple[glm_typing.Number], /) -> vec1: ...
@overload
def exp(x: Tuple[glm_typing.Number, glm_typing.Number], /) -> vec2: ...
@overload
def exp(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec3: ...
@overload
def exp(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec4: ...
@overload
def exp(x: _FDVT, /) -> _FDVT: ...
@overload
def exp(x: _QT, /) -> _QT: ...

@overload
def exp2(x: glm_typing.Number, /) -> float: ...
@overload
def exp2(x: Tuple[glm_typing.Number], /) -> vec1: ...
@overload
def exp2(x: Tuple[glm_typing.Number, glm_typing.Number], /) -> vec2: ...
@overload
def exp2(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec3: ...
@overload
def exp2(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec4: ...
@overload
def exp2(x: _FDVT, /) -> _FDVT: ...

@overload
def inversesqrt(x: glm_typing.Number, /) -> float: ...
@overload
def inversesqrt(x: Tuple[glm_typing.Number], /) -> vec1: ...
@overload
def inversesqrt(x: Tuple[glm_typing.Number, glm_typing.Number], /) -> vec2: ...
@overload
def inversesqrt(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec3: ...
@overload
def inversesqrt(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec4: ...
@overload
def inversesqrt(x: _FDVT, /) -> _FDVT: ...

@overload
def log(x: glm_typing.Number, /) -> float: ...
@overload
def log(x: Tuple[glm_typing.Number], /) -> vec1: ...
@overload
def log(x: Tuple[glm_typing.Number, glm_typing.Number], /) -> vec2: ...
@overload
def log(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec3: ...
@overload
def log(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec4: ...
@overload
def log(x: _FDVT, /) -> _FDVT: ...
@overload
def log(x: _QT, /) -> _QT: ...

@overload
def log2(x: glm_typing.Number, /) -> float: ...
@overload
def log2(x: Tuple[glm_typing.Number], /) -> vec1: ...
@overload
def log2(x: Tuple[glm_typing.Number, glm_typing.Number], /) -> vec2: ...
@overload
def log2(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec3: ...
@overload
def log2(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec4: ...
@overload
def log2(x: _FDVT, /) -> _FDVT: ...

@overload
def pow(base: glm_typing.Number, exponent: glm_typing.Number, /) -> float: ...
@overload
def pow(base: glm_typing.F32Vector1, exponent: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def pow(base: glm_typing.F32Vector2, exponent: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def pow(base: glm_typing.F32Vector3, exponent: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def pow(base: glm_typing.F32Vector4, exponent: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def pow(base: _NF32DFVT, exponent: _NF32DFVT, /) -> _NF32DFVT: ...
@overload
def pow(base: _QT, exponent: _QT, /) -> _QT: ...

@overload
def sqrt(x: glm_typing.Number, /) -> float: ...
@overload
def sqrt(x: Tuple[glm_typing.Number], /) -> vec1: ...
@overload
def sqrt(x: Tuple[glm_typing.Number, glm_typing.Number], /) -> vec2: ...
@overload
def sqrt(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec3: ...
@overload
def sqrt(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec4: ...
@overload
def sqrt(x: _FDVT, /) -> _FDVT: ...
@overload
def sqrt(x: _QT, /) -> _QT: ...


@overload
def cross(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def cross(x: _NF32DFV3T, y: _NF32DFV3T, /) -> _NF32DFV3T: ...
@overload
def cross(x: _QT, y: _QT, /) -> _QT: ...

@overload
def distance(p0: glm_typing.Number, p1: glm_typing.Number, /) -> float: ...
@overload
def distance(p0: glm_typing.F32Vector1, p1: glm_typing.F32Vector1, /) -> float: ...
@overload
def distance(p0: glm_typing.F32Vector2, p1: glm_typing.F32Vector2, /) -> float: ...
@overload
def distance(p0: glm_typing.F32Vector3, p1: glm_typing.F32Vector3, /) -> float: ...
@overload
def distance(p0: glm_typing.F32Vector4, p1: glm_typing.F32Vector4, /) -> float: ...
@overload
def distance(p0: _NF32DFVT, p1: _NF32DFVT, /) -> float: ...

@overload
def dot(x: glm_typing.Number, y: glm_typing.Number, /) -> float: ...
@overload
def dot(x: glm_typing.F32Vector1, y: glm_typing.F32Vector1, /) -> float: ...
@overload
def dot(x: glm_typing.F32Vector2, y: glm_typing.F32Vector2, /) -> float: ...
@overload
def dot(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, /) -> float: ...
@overload
def dot(x: glm_typing.F32Vector4, y: glm_typing.F32Vector4, /) -> float: ...
@overload
def dot(x: _NF32DFVT, y: _NF32DFVT, /) -> float: ...
@overload
def dot(x: _QT, y: _QT, /) -> float: ...

@overload
def faceforward(N: glm_typing.Number, I: glm_typing.Number, Nref: float, /) -> float: ...
@overload
def faceforward(x: glm_typing.F32Vector1, I: glm_typing.F32Vector1, Nref: glm_typing.F32Vector1, /) -> float: ...
@overload
def faceforward(x: glm_typing.F32Vector2, I: glm_typing.F32Vector2, Nref: glm_typing.F32Vector2, /) -> float: ...
@overload
def faceforward(x: glm_typing.F32Vector3, I: glm_typing.F32Vector3, Nref: glm_typing.F32Vector3, /) -> float: ...
@overload
def faceforward(x: glm_typing.F32Vector4, I: glm_typing.F32Vector4, Nref: glm_typing.F32Vector4, /) -> float: ...
@overload
def faceforward(N: _NF32DFVT, I: _NF32DFVT, Nref: _NF32DFVT, /) -> _NF32DFVT: ...

def length(x: Union[glm_typing.Number, glm_typing.FDAnyVectorAny, glm_typing.FDAnyQuaternion], /) -> float: ...

@overload
def normalize(x: Tuple[glm_typing.Number], /) -> vec1: ...
@overload
def normalize(x: Tuple[glm_typing.Number, glm_typing.Number], /) -> vec2: ...
@overload
def normalize(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec3: ...
@overload
def normalize(x: Tuple[glm_typing.Number, glm_typing.Number, glm_typing.Number, glm_typing.Number], /) -> vec4: ...
@overload
def normalize(x: _FDVT, /) -> _FDVT: ...
@overload
def normalize(x: _QT, /) -> _QT: ...

@overload
def reflect(I: glm_typing.Number, N: glm_typing.Number, /) -> float: ...
@overload
def reflect(I: glm_typing.F32Vector1, N: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def reflect(I: glm_typing.F32Vector2, N: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def reflect(I: glm_typing.F32Vector3, N: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def reflect(I: glm_typing.F32Vector4, N: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def reflect(I: _NF32DFVT, N: _NF32DFVT, /) -> _NF32DFVT: ...

@overload
def refract(I: glm_typing.Number, N: glm_typing.Number, eta: float, /) -> float: ...
@overload
def refract(I: glm_typing.F32Vector1, N: glm_typing.F32Vector1, eta: float, /) -> vec1: ...
@overload
def refract(I: glm_typing.F32Vector2, N: glm_typing.F32Vector2, eta: float, /) -> vec2: ...
@overload
def refract(I: glm_typing.F32Vector3, N: glm_typing.F32Vector3, eta: float, /) -> vec3: ...
@overload
def refract(I: glm_typing.F32Vector4, N: glm_typing.F32Vector4, eta: float, /) -> vec4: ...
@overload
def refract(I: _NF32DFVT, N: _NF32DFVT, eta: float, /) -> _NF32DFVT: ...


@overload
def bitCount(v: int, /) -> int: ...
@overload
def bitCount(v: glm_typing.IUAnyVector1, /) -> ivec1: ...
@overload
def bitCount(v: glm_typing.IUAnyVector2, /) -> ivec2: ...
@overload
def bitCount(v: glm_typing.IUAnyVector3, /) -> ivec3: ...
@overload
def bitCount(v: glm_typing.IUAnyVector4, /) -> ivec4: ...

@overload
def bitfieldExtract(value: int, offset: int, bits: int, /) -> int: ...
@overload
def bitfieldExtract(v: glm_typing.I32Vector1, offset: int, bits: int, /) -> ivec1: ...
@overload
def bitfieldExtract(v: glm_typing.I32Vector2, offset: int, bits: int, /) -> ivec2: ...
@overload
def bitfieldExtract(v: glm_typing.I32Vector3, offset: int, bits: int, /) -> ivec3: ...
@overload
def bitfieldExtract(v: glm_typing.I32Vector4, offset: int, bits: int, /) -> ivec4: ...
@overload
def bitfieldExtract(value: _NI32IUVT, offset: int, bits: int, /) -> _NI32IUVT: ...

@overload
def bitfieldInsert(base: int, insert: int, offset: int, bits: int, /) -> int: ...
@overload
def bitfieldInsert(base: glm_typing.I32Vector1, insert: glm_typing.I32Vector1, offset: int, bits: int, /) -> ivec1: ...
@overload
def bitfieldInsert(base: glm_typing.I32Vector2, insert: glm_typing.I32Vector2, offset: int, bits: int, /) -> ivec2: ...
@overload
def bitfieldInsert(base: glm_typing.I32Vector3, insert: glm_typing.I32Vector3, offset: int, bits: int, /) -> ivec3: ...
@overload
def bitfieldInsert(base: glm_typing.I32Vector4, insert: glm_typing.I32Vector4, offset: int, bits: int, /) -> ivec4: ...
@overload
def bitfieldInsert(base: _NI32IUVT, insert: _NI32IUVT, offset: int, bits: int, /) -> _NI32IUVT: ...

@overload
def bitfieldReverse(value: int, /) -> int: ...
@overload
def bitfieldReverse(value: glm_typing.I32Vector1, /) -> ivec1: ...
@overload
def bitfieldReverse(value: glm_typing.I32Vector2, /) -> ivec2: ...
@overload
def bitfieldReverse(value: glm_typing.I32Vector3, /) -> ivec3: ...
@overload
def bitfieldReverse(value: glm_typing.I32Vector4, /) -> ivec4: ...
@overload
def bitfieldReverse(value: _NI32IUVT, /) -> _NI32IUVT: ...

@overload
def findLSB(value: int, /) -> int: ...
@overload
def findLSB(value: glm_typing.I32Vector1, /) -> ivec1: ...
@overload
def findLSB(value: glm_typing.I32Vector2, /) -> ivec2: ...
@overload
def findLSB(value: glm_typing.I32Vector3, /) -> ivec3: ...
@overload
def findLSB(value: glm_typing.I32Vector4, /) -> ivec4: ...
@overload
def findLSB(value: _NI32IUVT, /) -> _NI32IUVT: ...

@overload
def findMSB(value: int, /) -> int: ...
@overload
def findMSB(value: glm_typing.I32Vector1, /) -> ivec1: ...
@overload
def findMSB(value: glm_typing.I32Vector2, /) -> ivec2: ...
@overload
def findMSB(value: glm_typing.I32Vector3, /) -> ivec3: ...
@overload
def findMSB(value: glm_typing.I32Vector4, /) -> ivec4: ...
@overload
def findMSB(value: _NI32IUVT, /) -> _NI32IUVT: ...

def imulExtended(x: _IVT, y: _IVT, msb: _IVT, lsb: _IVT, /) -> None: ...

def uaddCarry(x: _UVT, y: _UVT, carry: _UVT, /) -> _UVT: ...

def umulExtended(x: _UVT, y: _UVT, msb: _UVT, lsb: _UVT, /) -> None: ...

def usubBorrow(x: _UVT, y: _UVT, borrow: _UVT, /) -> _UVT: ...


def determinant(m: glm_typing.AnyAnyMatrixSquare, /) -> float: ...

@overload
def inverse(m: glm_typing.F32Matrix2x2, /) -> mat2x2: ...
@overload
def inverse(m: glm_typing.F32Matrix3x3, /) -> mat3x3: ...
@overload
def inverse(m: glm_typing.F32Matrix4x4, /) -> mat4x4: ...
@overload
def inverse(m: _NF32FDMSQRT, /) -> _NF32FDMSQRT: ...
@overload
def inverse(q: _QT, /) -> _QT: ...

@overload
def matrixCompMult(x: glm_typing.F32Matrix2x2, y: glm_typing.F32Matrix2x2, /) -> mat2x2: ...
@overload
def matrixCompMult(x: glm_typing.F32Matrix3x3, y: glm_typing.F32Matrix3x3, /) -> mat3x3: ...
@overload
def matrixCompMult(x: glm_typing.F32Matrix4x4, y: glm_typing.F32Matrix4x4, /) -> mat4x4: ...
@overload
def matrixCompMult(x: _NF32FDMSQRT, y: _NF32FDMSQRT, /) -> _NF32FDMSQRT: ...

@overload
def outerProduct(c: glm_typing.F32Vector2, r: glm_typing.F32Vector2, /) -> mat2x2: ...
@overload
def outerProduct(c: dvec2, r: dvec2, /) -> mat2x2: ...
@overload
def outerProduct(c: glm_typing.F32Vector2, r: glm_typing.F32Vector3, /) -> mat3x2: ...
@overload
def outerProduct(c: dvec2, r: dvec3, /) -> mat3x2: ...
@overload
def outerProduct(c: glm_typing.F32Vector2, r: glm_typing.F32Vector4, /) -> mat4x2: ...
@overload
def outerProduct(c: dvec2, r: dvec4, /) -> mat4x2: ...
@overload
def outerProduct(c: glm_typing.F32Vector3, r: glm_typing.F32Vector2, /) -> mat2x3: ...
@overload
def outerProduct(c: dvec3, r: dvec2, /) -> mat2x3: ...
@overload
def outerProduct(c: glm_typing.F32Vector3, r: glm_typing.F32Vector3, /) -> mat3x3: ...
@overload
def outerProduct(c: dvec3, r: dvec3, /) -> mat3x3: ...
@overload
def outerProduct(c: glm_typing.F32Vector3, r: glm_typing.F32Vector4, /) -> mat4x3: ...
@overload
def outerProduct(c: dvec3, r: dvec4, /) -> mat4x3: ...
@overload
def outerProduct(c: glm_typing.F32Vector4, r: glm_typing.F32Vector2, /) -> mat2x4: ...
@overload
def outerProduct(c: dvec4, r: dvec2, /) -> mat2x4: ...
@overload
def outerProduct(c: glm_typing.F32Vector4, r: glm_typing.F32Vector3, /) -> mat3x4: ...
@overload
def outerProduct(c: dvec4, r: dvec3, /) -> mat3x4: ...
@overload
def outerProduct(c: glm_typing.F32Vector4, r: glm_typing.F32Vector4, /) -> mat4x4: ...
@overload
def outerProduct(c: dvec4, r: dvec4, /) -> mat4x4: ...

@overload
def transpose(x: glm_typing.F32Matrix2x2, /) -> fmat2x2: ...
@overload
def transpose(x: glm_typing.F32Matrix2x3, /) -> fmat3x2: ...
@overload
def transpose(x: glm_typing.F32Matrix2x4, /) -> fmat4x2: ...
@overload
def transpose(x: glm_typing.F32Matrix3x2, /) -> fmat2x3: ...
@overload
def transpose(x: glm_typing.F32Matrix3x3, /) -> fmat3x3: ...
@overload
def transpose(x: glm_typing.F32Matrix3x4, /) -> fmat4x3: ...
@overload
def transpose(x: glm_typing.F32Matrix4x2, /) -> fmat2x4: ...
@overload
def transpose(x: glm_typing.F32Matrix4x3, /) -> fmat3x4: ...
@overload
def transpose(x: glm_typing.F32Matrix4x4, /) -> fmat4x4: ...
@overload
def transpose(x: dmat2x2, /) -> dmat2x2: ...
@overload
def transpose(x: dmat2x3, /) -> dmat3x2: ...
@overload
def transpose(x: dmat2x4, /) -> dmat4x2: ...
@overload
def transpose(x: dmat3x2, /) -> dmat2x3: ...
@overload
def transpose(x: dmat3x3, /) -> dmat3x3: ...
@overload
def transpose(x: dmat3x4, /) -> dmat4x3: ...
@overload
def transpose(x: dmat4x2, /) -> dmat2x4: ...
@overload
def transpose(x: dmat4x3, /) -> dmat3x4: ...
@overload
def transpose(x: dmat4x4, /) -> dmat4x4: ...
@overload
def transpose(x: imat2x2, /) -> imat2x2: ...
@overload
def transpose(x: imat2x3, /) -> imat3x2: ...
@overload
def transpose(x: imat2x4, /) -> imat4x2: ...
@overload
def transpose(x: imat3x2, /) -> imat2x3: ...
@overload
def transpose(x: imat3x3, /) -> imat3x3: ...
@overload
def transpose(x: imat3x4, /) -> imat4x3: ...
@overload
def transpose(x: imat4x2, /) -> imat2x4: ...
@overload
def transpose(x: imat4x3, /) -> imat3x4: ...
@overload
def transpose(x: imat4x4, /) -> imat4x4: ...
@overload
def transpose(x: umat2x2, /) -> umat2x2: ...
@overload
def transpose(x: umat2x3, /) -> umat3x2: ...
@overload
def transpose(x: umat2x4, /) -> umat4x2: ...
@overload
def transpose(x: umat3x2, /) -> umat2x3: ...
@overload
def transpose(x: umat3x3, /) -> umat3x3: ...
@overload
def transpose(x: umat3x4, /) -> umat4x3: ...
@overload
def transpose(x: umat4x2, /) -> umat2x4: ...
@overload
def transpose(x: umat4x3, /) -> umat3x4: ...
@overload
def transpose(x: umat4x4, /) -> umat4x4: ...


def packDouble2x32(v: glm_typing.U32Vector2, /) -> float: ...

def packHalf2x16(v: glm_typing.F32Vector2, /) -> int: ...

def packSnorm2x16(v: glm_typing.F32Vector2, /) -> int: ...

def packSnorm4x8(v: glm_typing.F32Vector4, /) -> int: ...

def packUnorm2x16(v: glm_typing.F32Vector2, /) -> int: ...

def packUnorm4x8(v: glm_typing.F32Vector4, /) -> int: ...

def unpackDouble2x32(v: float, /) -> uvec2: ...

def unpackHalf2x16(v: int, /) -> vec2: ...

def unpackSnorm2x16(p: int, /) -> vec2: ...

def unpackSnorm4x8(p: int, /) -> vec4: ...

def unpackUnorm2x16(p: int, /) -> vec2: ...

def unpackUnorm4x8(p: int, /) -> vec4: ...


@overload
def acos(x: glm_typing.Number, /) -> float: ...
@overload
def acos(x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def acos(x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def acos(x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def acos(x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def acos(x: _NF32DFVT, /) -> _NF32DFVT: ...

@overload
def acosh(x: glm_typing.Number, /) -> float: ...
@overload
def acosh(x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def acosh(x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def acosh(x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def acosh(x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def acosh(x: _NF32DFVT, /) -> _NF32DFVT: ...

@overload
def asin(x: glm_typing.Number, /) -> float: ...
@overload
def asin(x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def asin(x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def asin(x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def asin(x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def asin(x: _NF32DFVT, /) -> _NF32DFVT: ...

@overload
def asinh(x: glm_typing.Number, /) -> float: ...
@overload
def asinh(x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def asinh(x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def asinh(x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def asinh(x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def asinh(x: _NF32DFVT, /) -> _NF32DFVT: ...

@overload
def atan(y_over_x: glm_typing.Number, /) -> float: ...
@overload
def atan(y_over_x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def atan(y_over_x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def atan(y_over_x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def atan(y_over_x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def atan(y_over_x: _NF32DFVT, /) -> _NF32DFVT: ...
@overload
def atan(y: glm_typing.Number, x: glm_typing.Number, /) -> float: ...
@overload
def atan(y: glm_typing.F32Vector1, x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def atan(y: glm_typing.F32Vector2, x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def atan(y: glm_typing.F32Vector3, x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def atan(y: glm_typing.F32Vector4, x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def atan(y: _NF32DFVT, x: _NF32DFVT, /) -> _NF32DFVT: ...

@overload
def atanh(x: glm_typing.Number, /) -> float: ...
@overload
def atanh(x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def atanh(x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def atanh(x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def atanh(x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def atanh(x: _NF32DFVT, /) -> _NF32DFVT: ...

@overload
def cos(x: glm_typing.Number, /) -> float: ...
@overload
def cos(x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def cos(x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def cos(x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def cos(x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def cos(x: _NF32DFVT, /) -> _NF32DFVT: ...

@overload
def cosh(x: glm_typing.Number, /) -> float: ...
@overload
def cosh(x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def cosh(x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def cosh(x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def cosh(x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def cosh(x: _NF32DFVT, /) -> _NF32DFVT: ...

@overload
def degrees(x: glm_typing.Number, /) -> float: ...
@overload
def degrees(x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def degrees(x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def degrees(x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def degrees(x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def degrees(x: _NF32DFVT, /) -> _NF32DFVT: ...

@overload
def radians(x: glm_typing.Number, /) -> float: ...
@overload
def radians(x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def radians(x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def radians(x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def radians(x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def radians(x: _NF32DFVT, /) -> _NF32DFVT: ...

@overload
def sin(x: glm_typing.Number, /) -> float: ...
@overload
def sin(x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def sin(x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def sin(x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def sin(x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def sin(x: _NF32DFVT, /) -> _NF32DFVT: ...

@overload
def sinh(x: glm_typing.Number, /) -> float: ...
@overload
def sinh(x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def sinh(x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def sinh(x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def sinh(x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def sinh(x: _NF32DFVT, /) -> _NF32DFVT: ...

@overload
def tan(x: glm_typing.Number, /) -> float: ...
@overload
def tan(x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def tan(x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def tan(x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def tan(x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def tan(x: _NF32DFVT, /) -> _NF32DFVT: ...

@overload
def tanh(x: glm_typing.Number, /) -> float: ...
@overload
def tanh(x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def tanh(x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def tanh(x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def tanh(x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def tanh(x: _NF32DFVT, /) -> _NF32DFVT: ...



def all(v: glm_typing.BAnyVectorAny, /) -> bool: ...

def any(v: glm_typing.BAnyVectorAny, /) -> bool: ...

@overload
def equal(x: glm_typing.Number, y: glm_typing.Number, ULPs: int, /) -> int: ...
@overload
def equal(x: glm_typing.F32Vector1, y: glm_typing.F32Vector1, /) -> bvec1: ...
@overload
def equal(x: _NF32V1T, y: _NF32V1T, /) -> bvec1: ...
@overload
def equal(x: glm_typing.F32Vector1, y: glm_typing.F32Vector1, ULPs_epsilon: Union[glm_typing.Number, ivec1, glm_typing.F32Vector1], /) -> bvec1: ...
@overload
def equal(x: _NF32V1T, y: _NF32V1T, ULPs_epsilon: Union[glm_typing.Number, ivec1, glm_typing.F32Vector1], /) -> bvec1: ...
@overload
def equal(x: glm_typing.F32Vector2, y: glm_typing.F32Vector2, /) -> bvec2: ...
@overload
def equal(x: _NF32V2T, y: _NF32V2T, /) -> bvec2: ...
@overload
def equal(x: glm_typing.F32Vector2, y: glm_typing.F32Vector2, ULPs_epsilon: Union[glm_typing.Number, ivec2, glm_typing.F32Vector2], /) -> bvec2: ...
@overload
def equal(x: _NF32V2T, y: _NF32V2T, ULPs_epsilon: Union[glm_typing.Number, ivec2, glm_typing.F32Vector2], /) -> bvec2: ...
@overload
def equal(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, /) -> bvec3: ...
@overload
def equal(x: _NF32V3T, y: _NF32V3T, /) -> bvec3: ...
@overload
def equal(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, ULPs_epsilon: Union[glm_typing.Number, ivec3, glm_typing.F32Vector3], /) -> bvec3: ...
@overload
def equal(x: _NF32V3T, y: _NF32V3T, ULPs_epsilon: Union[glm_typing.Number, ivec3, glm_typing.F32Vector3], /) -> bvec3: ...
@overload
def equal(x: glm_typing.F32Vector4, y: glm_typing.F32Vector4, /) -> bvec4: ...
@overload
def equal(x: _NF32V4T, y: _NF32V4T, /) -> bvec4: ...
@overload
def equal(x: glm_typing.F32Vector4, y: glm_typing.F32Vector4, ULPs_epsilon: Union[glm_typing.Number, ivec4, glm_typing.F32Vector4], /) -> bvec4: ...
@overload
def equal(x: _NF32V4T, y: _NF32V4T, ULPs_epsilon: Union[glm_typing.Number, ivec4, glm_typing.F32Vector4], /) -> bvec4: ...
@overload
def equal(x: glm_typing.F32Matrix2xAny, y: glm_typing.F32Matrix2xAny, /) -> bvec2: ...
@overload
def equal(x: _NF32M2XNT, y: _NF32M2XNT, /) -> bvec2: ...
@overload
def equal(x: glm_typing.F32Matrix2xAny, y: glm_typing.F32Matrix2xAny, ULPs_epsilon: Union[glm_typing.Number, ivec2, glm_typing.F32Vector2], /) -> bvec2: ...
@overload
def equal(x: _NF32M2XNT, y: _NF32M2XNT, ULPs_epsilon: Union[glm_typing.Number, ivec2, glm_typing.F32Vector2], /) -> bvec2: ...
@overload
def equal(x: glm_typing.F32Matrix3xAny, y: glm_typing.F32Matrix3xAny, /) -> bvec3: ...
@overload
def equal(x: _NF32M3XNT, y: _NF32M3XNT, /) -> bvec3: ...
@overload
def equal(x: glm_typing.F32Matrix3xAny, y: glm_typing.F32Matrix3xAny, ULPs_epsilon: Union[glm_typing.Number, ivec3, glm_typing.F32Vector3], /) -> bvec3: ...
@overload
def equal(x: _NF32M3XNT, y: _NF32M3XNT, ULPs_epsilon: Union[glm_typing.Number, ivec3, glm_typing.F32Vector3], /) -> bvec3: ...
@overload
def equal(x: glm_typing.F32Matrix4xAny, y: glm_typing.F32Matrix4xAny, /) -> bvec4: ...
@overload
def equal(x: _NF32M4XNT, y: _NF32M4XNT, /) -> bvec4: ...
@overload
def equal(x: glm_typing.F32Matrix4xAny, y: glm_typing.F32Matrix4xAny, ULPs_epsilon: Union[glm_typing.Number, ivec4, glm_typing.F32Vector4], /) -> bvec4: ...
@overload
def equal(x: _NF32M4XNT, y: _NF32M4XNT, ULPs_epsilon: Union[glm_typing.Number, ivec4, glm_typing.F32Vector4], /) -> bvec4: ...
@overload
def equal(x: _QT, y: _QT, /) -> int: ...

@overload
def greaterThan(x: _QT, y: _QT, /) -> bvec4: ...
@overload
def greaterThan(x: glm_typing.F32Vector1, y: glm_typing.F32Vector1, /) -> bvec1: ...
@overload
def greaterThan(x: _NF32V1T, y: _NF32V1T, /) -> bvec1: ...
@overload
def greaterThan(x: glm_typing.F32Vector2, y: glm_typing.F32Vector2, /) -> bvec2: ...
@overload
def greaterThan(x: _NF32V2T, y: _NF32V2T, /) -> bvec2: ...
@overload
def greaterThan(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, /) -> bvec3: ...
@overload
def greaterThan(x: _NF32V3T, y: _NF32V3T, /) -> bvec3: ...
@overload
def greaterThan(x: glm_typing.F32Vector4, y: glm_typing.F32Vector4, /) -> bvec4: ...
@overload
def greaterThan(x: _NF32V4T, y: _NF32V4T, /) -> bvec4: ...

@overload
def greaterThanEqual(x: _QT, y: _QT, /) -> bvec4: ...
@overload
def greaterThanEqual(x: glm_typing.F32Vector1, y: glm_typing.F32Vector1, /) -> bvec1: ...
@overload
def greaterThanEqual(x: _NF32V1T, y: _NF32V1T, /) -> bvec1: ...
@overload
def greaterThanEqual(x: glm_typing.F32Vector2, y: glm_typing.F32Vector2, /) -> bvec2: ...
@overload
def greaterThanEqual(x: _NF32V2T, y: _NF32V2T, /) -> bvec2: ...
@overload
def greaterThanEqual(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, /) -> bvec3: ...
@overload
def greaterThanEqual(x: _NF32V3T, y: _NF32V3T, /) -> bvec3: ...
@overload
def greaterThanEqual(x: glm_typing.F32Vector4, y: glm_typing.F32Vector4, /) -> bvec4: ...
@overload
def greaterThanEqual(x: _NF32V4T, y: _NF32V4T, /) -> bvec4: ...

@overload
def lessThan(x: _QT, y: _QT, /) -> bvec4: ...
@overload
def lessThan(x: glm_typing.F32Vector1, y: glm_typing.F32Vector1, /) -> bvec1: ...
@overload
def lessThan(x: _NF32V1T, y: _NF32V1T, /) -> bvec1: ...
@overload
def lessThan(x: glm_typing.F32Vector2, y: glm_typing.F32Vector2, /) -> bvec2: ...
@overload
def lessThan(x: _NF32V2T, y: _NF32V2T, /) -> bvec2: ...
@overload
def lessThan(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, /) -> bvec3: ...
@overload
def lessThan(x: _NF32V3T, y: _NF32V3T, /) -> bvec3: ...
@overload
def lessThan(x: glm_typing.F32Vector4, y: glm_typing.F32Vector4, /) -> bvec4: ...
@overload
def lessThan(x: _NF32V4T, y: _NF32V4T, /) -> bvec4: ...

@overload
def lessThanEqual(x: _QT, y: _QT, /) -> bvec4: ...
@overload
def lessThanEqual(x: glm_typing.F32Vector1, y: glm_typing.F32Vector1, /) -> bvec1: ...
@overload
def lessThanEqual(x: _NF32V1T, y: _NF32V1T, /) -> bvec1: ...
@overload
def lessThanEqual(x: glm_typing.F32Vector2, y: glm_typing.F32Vector2, /) -> bvec2: ...
@overload
def lessThanEqual(x: _NF32V2T, y: _NF32V2T, /) -> bvec2: ...
@overload
def lessThanEqual(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, /) -> bvec3: ...
@overload
def lessThanEqual(x: _NF32V3T, y: _NF32V3T, /) -> bvec3: ...
@overload
def lessThanEqual(x: glm_typing.F32Vector4, y: glm_typing.F32Vector4, /) -> bvec4: ...
@overload
def lessThanEqual(x: _NF32V4T, y: _NF32V4T, /) -> bvec4: ...

@overload
def notEqual(x: _QT, y: _QT, /) -> bvec4: ...
@overload
def notEqual(x: glm_typing.F32Vector1, y: glm_typing.F32Vector1, /) -> bvec1: ...
@overload
def notEqual(x: _NF32V1T, y: _NF32V1T, /) -> bvec1: ...
@overload
def notEqual(x: glm_typing.F32Vector2, y: glm_typing.F32Vector2, /) -> bvec2: ...
@overload
def notEqual(x: _NF32V2T, y: _NF32V2T, /) -> bvec2: ...
@overload
def notEqual(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, /) -> bvec3: ...
@overload
def notEqual(x: _NF32V3T, y: _NF32V3T, /) -> bvec3: ...
@overload
def notEqual(x: glm_typing.F32Vector4, y: glm_typing.F32Vector4, /) -> bvec4: ...
@overload
def notEqual(x: _NF32V4T, y: _NF32V4T, /) -> bvec4: ...

def not_(v: glm_typing.BAnyVectorAny, /) -> bool: ...


def add(a: Any, b: Any, /) -> Any: ...

def and_(a: Any, b: Any, /) -> Any: ...

def cmp(a: Any, b: Any, /) -> Any: ...

def div(a: Any, b: Any, /) -> Any: ...

def floordiv(a: Any, b: Any, /) -> Any: ...

def if_else(b: Any, x: Any, y: Any, /) -> Any: ...

def inv(a: Any, /) -> Any: ...

def lshift(a: Any, b: Any, /) -> Any: ...

def mul(a: Any, b: Any, /) -> Any: ...

def neg(a: Any, /) -> Any: ...

def or_(a: Any, b: Any, /) -> Any: ...

def pos(a: Any, /) -> Any: ...

def rshift(a: Any, b: Any, /) -> Any: ...

def sub(a: Any, b: Any, /) -> Any: ...

def xor(a: Any, b: Any, /) -> Any: ...



@overload
def convertLinearToSRGB(ColorLinear: glm_typing.F32Vector1) -> vec1: ...
@overload
def convertLinearToSRGB(ColorLinear: glm_typing.F32Vector1, Gamma: glm_typing.Number) -> vec1: ...
@overload
def convertLinearToSRGB(ColorLinear: glm_typing.F32Vector2) -> vec2: ...
@overload
def convertLinearToSRGB(ColorLinear: glm_typing.F32Vector2, Gamma: glm_typing.Number) -> vec2: ...
@overload
def convertLinearToSRGB(ColorLinear: glm_typing.F32Vector3) -> vec3: ...
@overload
def convertLinearToSRGB(ColorLinear: glm_typing.F32Vector3, Gamma: glm_typing.Number) -> vec3: ...
@overload
def convertLinearToSRGB(ColorLinear: glm_typing.F32Vector4) -> vec4: ...
@overload
def convertLinearToSRGB(ColorLinear: glm_typing.F32Vector4, Gamma: glm_typing.Number) -> vec4: ...
@overload
def convertLinearToSRGB(ColorLinear: _NF32DFVT) -> _NF32DFVT: ...
@overload
def convertLinearToSRGB(ColorLinear: _NF32DFVT, Gamma: glm_typing.Number) -> _NF32DFVT: ...

@overload
def convertSRGBToLinear(ColorLinear: glm_typing.F32Vector1) -> vec1: ...
@overload
def convertSRGBToLinear(ColorLinear: glm_typing.F32Vector1, Gamma: glm_typing.Number) -> vec1: ...
@overload
def convertSRGBToLinear(ColorLinear: glm_typing.F32Vector2) -> vec2: ...
@overload
def convertSRGBToLinear(ColorLinear: glm_typing.F32Vector2, Gamma: glm_typing.Number) -> vec2: ...
@overload
def convertSRGBToLinear(ColorLinear: glm_typing.F32Vector3) -> vec3: ...
@overload
def convertSRGBToLinear(ColorLinear: glm_typing.F32Vector3, Gamma: glm_typing.Number) -> vec3: ...
@overload
def convertSRGBToLinear(ColorLinear: glm_typing.F32Vector4) -> vec4: ...
@overload
def convertSRGBToLinear(ColorLinear: glm_typing.F32Vector4, Gamma: glm_typing.Number) -> vec4: ...
@overload
def convertSRGBToLinear(ColorLinear: _NF32DFVT) -> _NF32DFVT: ...
@overload
def convertSRGBToLinear(ColorLinear: _NF32DFVT, Gamma: glm_typing.Number) -> _NF32DFVT: ...


def e() -> float: ...

def epsilon() -> float: ...

def euler() -> float: ...

def four_over_pi() -> float: ...

def golden_ratio() -> float: ...

def half_pi() -> float: ...

def ln_ln_two() -> float: ...

def ln_ten() -> float: ...

def ln_two() -> float: ...

def one() -> float: ...

def one_over_pi() -> float: ...

def one_over_root_two() -> float: ...

def one_over_two_pi() -> float: ...

def pi() -> float: ...

def quarter_pi() -> float: ...

def root_five() -> float: ...

def root_half_pi() -> float: ...

def root_ln_four() -> float: ...

def root_pi() -> float: ...

def root_three() -> float: ...

def root_two() -> float: ...

def root_two_pi() -> float: ...

def third() -> float: ...

def three_over_two_pi() -> float: ...

def two_over_pi() -> float: ...

def two_over_root_pi() -> float: ...

def two_pi() -> float: ...

def two_thirds() -> float: ...

def zero() -> float: ...


@overload
def epsilonEqual(x: glm_typing.Number, y: glm_typing.Number, epsilon: glm_typing.Number, /) -> bool: ...
@overload
def epsilonEqual(x: glm_typing.F32Vector1, y: glm_typing.F32Vector1, epsilon: glm_typing.Number, /) -> bvec1: ...
@overload
def epsilonEqual(x: _NF32DFV1T, y: _NF32DFV1T, epsilon: glm_typing.Number, /) -> bvec1: ...
@overload
def epsilonEqual(x: glm_typing.F32Vector2, y: glm_typing.F32Vector2, epsilon: glm_typing.Number, /) -> bvec2: ...
@overload
def epsilonEqual(x: _NF32DFV2T, y: _NF32DFV2T, epsilon: glm_typing.Number, /) -> bvec2: ...
@overload
def epsilonEqual(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, epsilon: glm_typing.Number, /) -> bvec3: ...
@overload
def epsilonEqual(x: _NF32DFV3T, y: _NF32DFV3T, epsilon: glm_typing.Number, /) -> bvec3: ...
@overload
def epsilonEqual(x: glm_typing.F32Vector4, y: glm_typing.F32Vector4, epsilon: glm_typing.Number, /) -> bvec4: ...
@overload
def epsilonEqual(x: _NF32DFV4T, y: _NF32DFV4T, epsilon: glm_typing.Number, /) -> bvec4: ...

@overload
def epsilonNotEqual(x: glm_typing.Number, y: glm_typing.Number, epsilon: glm_typing.Number, /) -> bool: ...
@overload
def epsilonNotEqual(x: glm_typing.F32Vector1, y: glm_typing.F32Vector1, epsilon: glm_typing.Number, /) -> bvec1: ...
@overload
def epsilonNotEqual(x: _NF32DFV1T, y: _NF32DFV1T, epsilon: glm_typing.Number, /) -> bvec1: ...
@overload
def epsilonNotEqual(x: glm_typing.F32Vector2, y: glm_typing.F32Vector2, epsilon: glm_typing.Number, /) -> bvec2: ...
@overload
def epsilonNotEqual(x: _NF32DFV2T, y: _NF32DFV2T, epsilon: glm_typing.Number, /) -> bvec2: ...
@overload
def epsilonNotEqual(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, epsilon: glm_typing.Number, /) -> bvec3: ...
@overload
def epsilonNotEqual(x: _NF32DFV3T, y: _NF32DFV3T, epsilon: glm_typing.Number, /) -> bvec3: ...
@overload
def epsilonNotEqual(x: glm_typing.F32Vector4, y: glm_typing.F32Vector4, epsilon: glm_typing.Number, /) -> bvec4: ...
@overload
def epsilonNotEqual(x: _NF32DFV4T, y: _NF32DFV4T, epsilon: glm_typing.Number, /) -> bvec4: ...


@overload
def iround(x: glm_typing.Number, /) -> int: ...
@overload
def iround(x: glm_typing.F32Vector1, /) -> ivec1: ...
@overload
def iround(x: _NF32DFV1T, /) -> ivec1: ...
@overload
def iround(x: glm_typing.F32Vector2, /) -> ivec2: ...
@overload
def iround(x: _NF32DFV2T, /) -> ivec2: ...
@overload
def iround(x: glm_typing.F32Vector3, /) -> ivec3: ...
@overload
def iround(x: _NF32DFV3T, /) -> ivec3: ...
@overload
def iround(x: glm_typing.F32Vector4, /) -> ivec4: ...
@overload
def iround(x: _NF32DFV4T, /) -> ivec4: ...

@overload
def uround(x: glm_typing.Number, /) -> int: ...
@overload
def uround(x: glm_typing.F32Vector1, /) -> uvec1: ...
@overload
def uround(x: _NF32DFV1T, /) -> uvec1: ...
@overload
def uround(x: glm_typing.F32Vector2, /) -> uvec2: ...
@overload
def uround(x: _NF32DFV2T, /) -> uvec2: ...
@overload
def uround(x: glm_typing.F32Vector3, /) -> uvec3: ...
@overload
def uround(x: _NF32DFV3T, /) -> uvec3: ...
@overload
def uround(x: glm_typing.F32Vector4, /) -> uvec4: ...
@overload
def uround(x: _NF32DFV4T, /) -> uvec4: ...



@overload
def column(m: glm_typing.F32Matrix2x2, index: int, /) -> vec2: ...
@overload
def column(m: glm_typing.F32Matrix2x2, index: int, x: glm_typing.F32Vector2, /) -> mat2x2: ...
@overload
def column(m: glm_typing.F32Matrix2x3, index: int, /) -> vec3: ...
@overload
def column(m: glm_typing.F32Matrix2x3, index: int, x: glm_typing.F32Vector3, /) -> mat2x3: ...
@overload
def column(m: glm_typing.F32Matrix2x4, index: int, /) -> vec4: ...
@overload
def column(m: glm_typing.F32Matrix2x4, index: int, x: glm_typing.F32Vector4, /) -> mat2x4: ...
@overload
def column(m: glm_typing.F32Matrix3x2, index: int, /) -> vec2: ...
@overload
def column(m: glm_typing.F32Matrix3x2, index: int, x: glm_typing.F32Vector2, /) -> mat3x2: ...
@overload
def column(m: glm_typing.F32Matrix3x3, index: int, /) -> vec3: ...
@overload
def column(m: glm_typing.F32Matrix3x3, index: int, x: glm_typing.F32Vector3, /) -> mat3x3: ...
@overload
def column(m: glm_typing.F32Matrix3x4, index: int, /) -> vec4: ...
@overload
def column(m: glm_typing.F32Matrix3x4, index: int, x: glm_typing.F32Vector4, /) -> mat3x4: ...
@overload
def column(m: glm_typing.F32Matrix4x2, index: int, /) -> vec2: ...
@overload
def column(m: glm_typing.F32Matrix4x2, index: int, x: glm_typing.F32Vector2, /) -> mat4x2: ...
@overload
def column(m: glm_typing.F32Matrix4x3, index: int, /) -> vec3: ...
@overload
def column(m: glm_typing.F32Matrix4x3, index: int, x: glm_typing.F32Vector3, /) -> mat4x3: ...
@overload
def column(m: glm_typing.F32Matrix4x4, index: int, /) -> vec4: ...
@overload
def column(m: glm_typing.F32Matrix4x4, index: int, x: glm_typing.F32Vector4, /) -> mat4x4: ...
@overload
def column(m: dmat2x2, index: int, /) -> dvec2: ...
@overload
def column(m: dmat2x2, index: int, x: Union[dvec2, dmvec2], /) -> dmat2x2: ...
@overload
def column(m: dmat2x3, index: int, /) -> dvec3: ...
@overload
def column(m: dmat2x3, index: int, x: Union[dvec3, dmvec3], /) -> dmat2x3: ...
@overload
def column(m: dmat2x4, index: int, /) -> dvec4: ...
@overload
def column(m: dmat2x4, index: int, x: Union[dvec4, dmvec4], /) -> dmat2x4: ...
@overload
def column(m: dmat3x2, index: int, /) -> dvec2: ...
@overload
def column(m: dmat3x2, index: int, x: Union[dvec2, dmvec2], /) -> dmat3x2: ...
@overload
def column(m: dmat3x3, index: int, /) -> dvec3: ...
@overload
def column(m: dmat3x3, index: int, x: Union[dvec3, dmvec3], /) -> dmat3x3: ...
@overload
def column(m: dmat3x4, index: int, /) -> dvec4: ...
@overload
def column(m: dmat3x4, index: int, x: Union[dvec4, dmvec4], /) -> dmat3x4: ...
@overload
def column(m: dmat4x2, index: int, /) -> dvec2: ...
@overload
def column(m: dmat4x2, index: int, x: Union[dvec2, dmvec2], /) -> dmat4x2: ...
@overload
def column(m: dmat4x3, index: int, /) -> dvec3: ...
@overload
def column(m: dmat4x3, index: int, x: Union[dvec3, dmvec3], /) -> dmat4x3: ...
@overload
def column(m: dmat4x4, index: int, /) -> dvec4: ...
@overload
def column(m: dmat4x4, index: int, x: Union[dvec4, dmvec4], /) -> dmat4x4: ...
@overload
def column(m: imat2x2, index: int, /) -> ivec2: ...
@overload
def column(m: imat2x2, index: int, x: Union[ivec2, imvec2], /) -> imat2x2: ...
@overload
def column(m: imat2x3, index: int, /) -> ivec3: ...
@overload
def column(m: imat2x3, index: int, x: Union[ivec3, imvec3], /) -> imat2x3: ...
@overload
def column(m: imat2x4, index: int, /) -> ivec4: ...
@overload
def column(m: imat2x4, index: int, x: Union[ivec4, imvec4], /) -> imat2x4: ...
@overload
def column(m: imat3x2, index: int, /) -> ivec2: ...
@overload
def column(m: imat3x2, index: int, x: Union[ivec2, imvec2], /) -> imat3x2: ...
@overload
def column(m: imat3x3, index: int, /) -> ivec3: ...
@overload
def column(m: imat3x3, index: int, x: Union[ivec3, imvec3], /) -> imat3x3: ...
@overload
def column(m: imat3x4, index: int, /) -> ivec4: ...
@overload
def column(m: imat3x4, index: int, x: Union[ivec4, imvec4], /) -> imat3x4: ...
@overload
def column(m: imat4x2, index: int, /) -> ivec2: ...
@overload
def column(m: imat4x2, index: int, x: Union[ivec2, imvec2], /) -> imat4x2: ...
@overload
def column(m: imat4x3, index: int, /) -> ivec3: ...
@overload
def column(m: imat4x3, index: int, x: Union[ivec3, imvec3], /) -> imat4x3: ...
@overload
def column(m: imat4x4, index: int, /) -> ivec4: ...
@overload
def column(m: imat4x4, index: int, x: Union[ivec4, imvec4], /) -> imat4x4: ...
@overload
def column(m: umat2x2, index: int, /) -> uvec2: ...
@overload
def column(m: umat2x2, index: int, x: Union[uvec2, umvec2], /) -> umat2x2: ...
@overload
def column(m: umat2x3, index: int, /) -> uvec3: ...
@overload
def column(m: umat2x3, index: int, x: Union[uvec3, umvec3], /) -> umat2x3: ...
@overload
def column(m: umat2x4, index: int, /) -> uvec4: ...
@overload
def column(m: umat2x4, index: int, x: Union[uvec4, umvec4], /) -> umat2x4: ...
@overload
def column(m: umat3x2, index: int, /) -> uvec2: ...
@overload
def column(m: umat3x2, index: int, x: Union[uvec2, umvec2], /) -> umat3x2: ...
@overload
def column(m: umat3x3, index: int, /) -> uvec3: ...
@overload
def column(m: umat3x3, index: int, x: Union[uvec3, umvec3], /) -> umat3x3: ...
@overload
def column(m: umat3x4, index: int, /) -> uvec4: ...
@overload
def column(m: umat3x4, index: int, x: Union[uvec4, umvec4], /) -> umat3x4: ...
@overload
def column(m: umat4x2, index: int, /) -> uvec2: ...
@overload
def column(m: umat4x2, index: int, x: Union[uvec2, umvec2], /) -> umat4x2: ...
@overload
def column(m: umat4x3, index: int, /) -> uvec3: ...
@overload
def column(m: umat4x3, index: int, x: Union[uvec3, umvec3], /) -> umat4x3: ...
@overload
def column(m: umat4x4, index: int, /) -> uvec4: ...
@overload
def column(m: umat4x4, index: int, x: Union[uvec4, umvec4], /) -> umat4x4: ...

@overload
def row(m: glm_typing.F32Matrix2x2, index: int, /) -> vec2: ...
@overload
def row(m: glm_typing.F32Matrix2x2, index: int, x: glm_typing.F32Vector2, /) -> mat2x2: ...
@overload
def row(m: glm_typing.F32Matrix2x3, index: int, /) -> vec2: ...
@overload
def row(m: glm_typing.F32Matrix2x3, index: int, x: glm_typing.F32Vector2, /) -> mat2x3: ...
@overload
def row(m: glm_typing.F32Matrix2x4, index: int, /) -> vec2: ...
@overload
def row(m: glm_typing.F32Matrix2x4, index: int, x: glm_typing.F32Vector2, /) -> mat2x4: ...
@overload
def row(m: glm_typing.F32Matrix3x2, index: int, /) -> vec3: ...
@overload
def row(m: glm_typing.F32Matrix3x2, index: int, x: glm_typing.F32Vector3, /) -> mat3x2: ...
@overload
def row(m: glm_typing.F32Matrix3x3, index: int, /) -> vec3: ...
@overload
def row(m: glm_typing.F32Matrix3x3, index: int, x: glm_typing.F32Vector3, /) -> mat3x3: ...
@overload
def row(m: glm_typing.F32Matrix3x4, index: int, /) -> vec3: ...
@overload
def row(m: glm_typing.F32Matrix3x4, index: int, x: glm_typing.F32Vector3, /) -> mat3x4: ...
@overload
def row(m: glm_typing.F32Matrix4x2, index: int, /) -> vec4: ...
@overload
def row(m: glm_typing.F32Matrix4x2, index: int, x: glm_typing.F32Vector4, /) -> mat4x2: ...
@overload
def row(m: glm_typing.F32Matrix4x3, index: int, /) -> vec4: ...
@overload
def row(m: glm_typing.F32Matrix4x3, index: int, x: glm_typing.F32Vector4, /) -> mat4x3: ...
@overload
def row(m: glm_typing.F32Matrix4x4, index: int, /) -> vec4: ...
@overload
def row(m: glm_typing.F32Matrix4x4, index: int, x: glm_typing.F32Vector4, /) -> mat4x4: ...
@overload
def row(m: dmat2x2, index: int, /) -> dvec2: ...
@overload
def row(m: dmat2x2, index: int, x: Union[dvec2, dmvec2], /) -> dmat2x2: ...
@overload
def row(m: dmat2x3, index: int, /) -> dvec2: ...
@overload
def row(m: dmat2x3, index: int, x: Union[dvec2, dmvec2], /) -> dmat2x3: ...
@overload
def row(m: dmat2x4, index: int, /) -> dvec2: ...
@overload
def row(m: dmat2x4, index: int, x: Union[dvec2, dmvec2], /) -> dmat2x4: ...
@overload
def row(m: dmat3x2, index: int, /) -> dvec3: ...
@overload
def row(m: dmat3x2, index: int, x: Union[dvec3, dmvec3], /) -> dmat3x2: ...
@overload
def row(m: dmat3x3, index: int, /) -> dvec3: ...
@overload
def row(m: dmat3x3, index: int, x: Union[dvec3, dmvec3], /) -> dmat3x3: ...
@overload
def row(m: dmat3x4, index: int, /) -> dvec3: ...
@overload
def row(m: dmat3x4, index: int, x: Union[dvec3, dmvec3], /) -> dmat3x4: ...
@overload
def row(m: dmat4x2, index: int, /) -> dvec4: ...
@overload
def row(m: dmat4x2, index: int, x: Union[dvec4, dmvec4], /) -> dmat4x2: ...
@overload
def row(m: dmat4x3, index: int, /) -> dvec4: ...
@overload
def row(m: dmat4x3, index: int, x: Union[dvec4, dmvec4], /) -> dmat4x3: ...
@overload
def row(m: dmat4x4, index: int, /) -> dvec4: ...
@overload
def row(m: dmat4x4, index: int, x: Union[dvec4, dmvec4], /) -> dmat4x4: ...
@overload
def row(m: imat2x2, index: int, /) -> ivec2: ...
@overload
def row(m: imat2x2, index: int, x: Union[ivec2, imvec2], /) -> imat2x2: ...
@overload
def row(m: imat2x3, index: int, /) -> ivec2: ...
@overload
def row(m: imat2x3, index: int, x: Union[ivec2, imvec2], /) -> imat2x3: ...
@overload
def row(m: imat2x4, index: int, /) -> ivec2: ...
@overload
def row(m: imat2x4, index: int, x: Union[ivec2, imvec2], /) -> imat2x4: ...
@overload
def row(m: imat3x2, index: int, /) -> ivec3: ...
@overload
def row(m: imat3x2, index: int, x: Union[ivec3, imvec3], /) -> imat3x2: ...
@overload
def row(m: imat3x3, index: int, /) -> ivec3: ...
@overload
def row(m: imat3x3, index: int, x: Union[ivec3, imvec3], /) -> imat3x3: ...
@overload
def row(m: imat3x4, index: int, /) -> ivec3: ...
@overload
def row(m: imat3x4, index: int, x: Union[ivec3, imvec3], /) -> imat3x4: ...
@overload
def row(m: imat4x2, index: int, /) -> ivec4: ...
@overload
def row(m: imat4x2, index: int, x: Union[ivec4, imvec4], /) -> imat4x2: ...
@overload
def row(m: imat4x3, index: int, /) -> ivec4: ...
@overload
def row(m: imat4x3, index: int, x: Union[ivec4, imvec4], /) -> imat4x3: ...
@overload
def row(m: imat4x4, index: int, /) -> ivec4: ...
@overload
def row(m: imat4x4, index: int, x: Union[ivec4, imvec4], /) -> imat4x4: ...
@overload
def row(m: umat2x2, index: int, /) -> uvec2: ...
@overload
def row(m: umat2x2, index: int, x: Union[uvec2, umvec2], /) -> umat2x2: ...
@overload
def row(m: umat2x3, index: int, /) -> uvec2: ...
@overload
def row(m: umat2x3, index: int, x: Union[uvec2, umvec2], /) -> umat2x3: ...
@overload
def row(m: umat2x4, index: int, /) -> uvec2: ...
@overload
def row(m: umat2x4, index: int, x: Union[uvec2, umvec2], /) -> umat2x4: ...
@overload
def row(m: umat3x2, index: int, /) -> uvec3: ...
@overload
def row(m: umat3x2, index: int, x: Union[uvec3, umvec3], /) -> umat3x2: ...
@overload
def row(m: umat3x3, index: int, /) -> uvec3: ...
@overload
def row(m: umat3x3, index: int, x: Union[uvec3, umvec3], /) -> umat3x3: ...
@overload
def row(m: umat3x4, index: int, /) -> uvec3: ...
@overload
def row(m: umat3x4, index: int, x: Union[uvec3, umvec3], /) -> umat3x4: ...
@overload
def row(m: umat4x2, index: int, /) -> uvec4: ...
@overload
def row(m: umat4x2, index: int, x: Union[uvec4, umvec4], /) -> umat4x2: ...
@overload
def row(m: umat4x3, index: int, /) -> uvec4: ...
@overload
def row(m: umat4x3, index: int, x: Union[uvec4, umvec4], /) -> umat4x3: ...
@overload
def row(m: umat4x4, index: int, /) -> uvec4: ...
@overload
def row(m: umat4x4, index: int, x: Union[uvec4, umvec4], /) -> umat4x4: ...


@overload
def affineInverse(m: glm_typing.FAnyMatrix3x3, /) -> mat3x3: ...
@overload
def affineInverse(m: dmat3x3, /) -> dmat3x3: ...
@overload
def affineInverse(m: glm_typing.FAnyMatrix4x4, /) -> mat4x4: ...
@overload
def affineInverse(m: dmat4x4, /) -> dmat4x4: ...

@overload
def inverseTranspose(m: glm_typing.FAnyMatrix2x2, /) -> mat2x2: ...
@overload
def inverseTranspose(m: dmat2x2, /) -> dmat2x2: ...
@overload
def inverseTranspose(m: glm_typing.FAnyMatrix3x3, /) -> mat3x3: ...
@overload
def inverseTranspose(m: dmat3x3, /) -> dmat3x3: ...
@overload
def inverseTranspose(m: glm_typing.FAnyMatrix4x4, /) -> mat4x4: ...
@overload
def inverseTranspose(m: dmat4x4, /) -> dmat4x4: ...


@overload
def perlin(p: glm_typing.FDAnyVectorAny, /) -> float: ...
@overload
def perlin(p: glm_typing.F32Vector1, rep: glm_typing.F32Vector1, /) -> float: ...
@overload
def perlin(p: glm_typing.F32Vector2, rep: glm_typing.F32Vector2, /) -> float: ...
@overload
def perlin(p: glm_typing.F32Vector3, rep: glm_typing.F32Vector3, /) -> float: ...
@overload
def perlin(p: glm_typing.F32Vector4, rep: glm_typing.F32Vector4, /) -> float: ...
@overload
def perlin(p: _NF32DFVT, rep: _NF32DFVT, /) -> float: ...

def simplex(p: glm_typing.FDAnyVectorAny, /) -> float: ...


def packF2x11_1x10(v: glm_typing.F32Vector3, /) -> int: ...

def packF3x9_E1x5(v: glm_typing.F32Vector3, /) -> int: ...

@overload
def packHalf(v: glm_typing.F32Vector1, /) -> u16vec1: ...
@overload
def packHalf(v: glm_typing.F32Vector2, /) -> u16vec2: ...
@overload
def packHalf(v: glm_typing.F32Vector3, /) -> u16vec3: ...
@overload
def packHalf(v: glm_typing.F32Vector4, /) -> u16vec4: ...

def packHalf1x16(v: float, /) -> int: ...

def packHalf4x16(v: glm_typing.F32Vector4, /) -> int: ...

def packI3x10_1x2(v: glm_typing.I32Vector4, /) -> int: ...

def packInt2x16(v: glm_typing.I16Vector2, /) -> int: ...

def packInt2x32(v: glm_typing.I32Vector2, /) -> int: ...

def packInt2x8(v: glm_typing.I8Vector2, /) -> int: ...

def packInt4x16(v: glm_typing.I16Vector4, /) -> int: ...

def packInt4x8(v: glm_typing.I8Vector4, /) -> int: ...

def packRGBM(v: glm_typing.F32Vector3, /) -> vec4: ...

@overload
def packSnorm(t: ctypes.c_int8, v: glm_typing.F32Vector1, /) -> i8vec1: ...
@overload
def packSnorm(t: ctypes.c_int8, v: _NF32DFV1T, /) -> i8vec1: ...
@overload
def packSnorm(t: ctypes.c_uint8, v: glm_typing.F32Vector1, /) -> u8vec1: ...
@overload
def packSnorm(t: ctypes.c_uint8, v: _NF32DFV1T, /) -> u8vec1: ...
@overload
def packSnorm(t: ctypes.c_int16, v: glm_typing.F32Vector1, /) -> i16vec1: ...
@overload
def packSnorm(t: ctypes.c_int16, v: _NF32DFV1T, /) -> i16vec1: ...
@overload
def packSnorm(t: ctypes.c_uint16, v: glm_typing.F32Vector1, /) -> u16vec1: ...
@overload
def packSnorm(t: ctypes.c_uint16, v: _NF32DFV1T, /) -> u16vec1: ...
@overload
def packSnorm(t: ctypes.c_int32, v: glm_typing.F32Vector1, /) -> i32vec1: ...
@overload
def packSnorm(t: ctypes.c_int32, v: _NF32DFV1T, /) -> i32vec1: ...
@overload
def packSnorm(t: ctypes.c_uint32, v: glm_typing.F32Vector1, /) -> u32vec1: ...
@overload
def packSnorm(t: ctypes.c_uint32, v: _NF32DFV1T, /) -> u32vec1: ...
@overload
def packSnorm(t: ctypes.c_int64, v: glm_typing.F32Vector1, /) -> i64vec1: ...
@overload
def packSnorm(t: ctypes.c_int64, v: _NF32DFV1T, /) -> i64vec1: ...
@overload
def packSnorm(t: ctypes.c_uint64, v: glm_typing.F32Vector1, /) -> u64vec1: ...
@overload
def packSnorm(t: ctypes.c_uint64, v: _NF32DFV1T, /) -> u64vec1: ...
@overload
def packSnorm(t: ctypes.c_int8, v: glm_typing.F32Vector2, /) -> i8vec2: ...
@overload
def packSnorm(t: ctypes.c_int8, v: _NF32DFV2T, /) -> i8vec2: ...
@overload
def packSnorm(t: ctypes.c_uint8, v: glm_typing.F32Vector2, /) -> u8vec2: ...
@overload
def packSnorm(t: ctypes.c_uint8, v: _NF32DFV2T, /) -> u8vec2: ...
@overload
def packSnorm(t: ctypes.c_int16, v: glm_typing.F32Vector2, /) -> i16vec2: ...
@overload
def packSnorm(t: ctypes.c_int16, v: _NF32DFV2T, /) -> i16vec2: ...
@overload
def packSnorm(t: ctypes.c_uint16, v: glm_typing.F32Vector2, /) -> u16vec2: ...
@overload
def packSnorm(t: ctypes.c_uint16, v: _NF32DFV2T, /) -> u16vec2: ...
@overload
def packSnorm(t: ctypes.c_int32, v: glm_typing.F32Vector2, /) -> i32vec2: ...
@overload
def packSnorm(t: ctypes.c_int32, v: _NF32DFV2T, /) -> i32vec2: ...
@overload
def packSnorm(t: ctypes.c_uint32, v: glm_typing.F32Vector2, /) -> u32vec2: ...
@overload
def packSnorm(t: ctypes.c_uint32, v: _NF32DFV2T, /) -> u32vec2: ...
@overload
def packSnorm(t: ctypes.c_int64, v: glm_typing.F32Vector2, /) -> i64vec2: ...
@overload
def packSnorm(t: ctypes.c_int64, v: _NF32DFV2T, /) -> i64vec2: ...
@overload
def packSnorm(t: ctypes.c_uint64, v: glm_typing.F32Vector2, /) -> u64vec2: ...
@overload
def packSnorm(t: ctypes.c_uint64, v: _NF32DFV2T, /) -> u64vec2: ...
@overload
def packSnorm(t: ctypes.c_int8, v: glm_typing.F32Vector3, /) -> i8vec3: ...
@overload
def packSnorm(t: ctypes.c_int8, v: _NF32DFV3T, /) -> i8vec3: ...
@overload
def packSnorm(t: ctypes.c_uint8, v: glm_typing.F32Vector3, /) -> u8vec3: ...
@overload
def packSnorm(t: ctypes.c_uint8, v: _NF32DFV3T, /) -> u8vec3: ...
@overload
def packSnorm(t: ctypes.c_int16, v: glm_typing.F32Vector3, /) -> i16vec3: ...
@overload
def packSnorm(t: ctypes.c_int16, v: _NF32DFV3T, /) -> i16vec3: ...
@overload
def packSnorm(t: ctypes.c_uint16, v: glm_typing.F32Vector3, /) -> u16vec3: ...
@overload
def packSnorm(t: ctypes.c_uint16, v: _NF32DFV3T, /) -> u16vec3: ...
@overload
def packSnorm(t: ctypes.c_int32, v: glm_typing.F32Vector3, /) -> i32vec3: ...
@overload
def packSnorm(t: ctypes.c_int32, v: _NF32DFV3T, /) -> i32vec3: ...
@overload
def packSnorm(t: ctypes.c_uint32, v: glm_typing.F32Vector3, /) -> u32vec3: ...
@overload
def packSnorm(t: ctypes.c_uint32, v: _NF32DFV3T, /) -> u32vec3: ...
@overload
def packSnorm(t: ctypes.c_int64, v: glm_typing.F32Vector3, /) -> i64vec3: ...
@overload
def packSnorm(t: ctypes.c_int64, v: _NF32DFV3T, /) -> i64vec3: ...
@overload
def packSnorm(t: ctypes.c_uint64, v: glm_typing.F32Vector3, /) -> u64vec3: ...
@overload
def packSnorm(t: ctypes.c_uint64, v: _NF32DFV3T, /) -> u64vec3: ...
@overload
def packSnorm(t: ctypes.c_int8, v: glm_typing.F32Vector4, /) -> i8vec4: ...
@overload
def packSnorm(t: ctypes.c_int8, v: _NF32DFV4T, /) -> i8vec4: ...
@overload
def packSnorm(t: ctypes.c_uint8, v: glm_typing.F32Vector4, /) -> u8vec4: ...
@overload
def packSnorm(t: ctypes.c_uint8, v: _NF32DFV4T, /) -> u8vec4: ...
@overload
def packSnorm(t: ctypes.c_int16, v: glm_typing.F32Vector4, /) -> i16vec4: ...
@overload
def packSnorm(t: ctypes.c_int16, v: _NF32DFV4T, /) -> i16vec4: ...
@overload
def packSnorm(t: ctypes.c_uint16, v: glm_typing.F32Vector4, /) -> u16vec4: ...
@overload
def packSnorm(t: ctypes.c_uint16, v: _NF32DFV4T, /) -> u16vec4: ...
@overload
def packSnorm(t: ctypes.c_int32, v: glm_typing.F32Vector4, /) -> i32vec4: ...
@overload
def packSnorm(t: ctypes.c_int32, v: _NF32DFV4T, /) -> i32vec4: ...
@overload
def packSnorm(t: ctypes.c_uint32, v: glm_typing.F32Vector4, /) -> u32vec4: ...
@overload
def packSnorm(t: ctypes.c_uint32, v: _NF32DFV4T, /) -> u32vec4: ...
@overload
def packSnorm(t: ctypes.c_int64, v: glm_typing.F32Vector4, /) -> i64vec4: ...
@overload
def packSnorm(t: ctypes.c_int64, v: _NF32DFV4T, /) -> i64vec4: ...
@overload
def packSnorm(t: ctypes.c_uint64, v: glm_typing.F32Vector4, /) -> u64vec4: ...
@overload
def packSnorm(t: ctypes.c_uint64, v: _NF32DFV4T, /) -> u64vec4: ...

def packSnorm1x16(v: float, /) -> int: ...

def packSnorm1x8(v: float, /) -> int: ...

def packSnorm2x8(v: glm_typing.F32Vector2, /) -> int: ...

def packSnorm3x10_1x2(v: glm_typing.F32Vector4, /) -> int: ...

def packSnorm4x16(v: glm_typing.F32Vector4, /) -> int: ...

def packU3x10_1x2(v: glm_typing.U32Vector4, /) -> int: ...

def packUint2x16(v: glm_typing.U16Vector2, /) -> int: ...

def packUint2x32(v: glm_typing.U32Vector2, /) -> int: ...

def packUint2x8(v: glm_typing.U8Vector2, /) -> int: ...

def packUint4x16(v: glm_typing.U16Vector4, /) -> int: ...

def packUint4x8(v: glm_typing.U16Vector4, /) -> int: ...

@overload
def packUnorm(t: ctypes.c_uint8, v: glm_typing.F32Vector1, /) -> u8vec1: ...
@overload
def packUnorm(t: ctypes.c_uint8, v: _NF32DFV1T, /) -> u8vec1: ...
@overload
def packUnorm(t: ctypes.c_uint16, v: glm_typing.F32Vector1, /) -> u16vec1: ...
@overload
def packUnorm(t: ctypes.c_uint16, v: _NF32DFV1T, /) -> u16vec1: ...
@overload
def packUnorm(t: ctypes.c_uint32, v: glm_typing.F32Vector1, /) -> u32vec1: ...
@overload
def packUnorm(t: ctypes.c_uint32, v: _NF32DFV1T, /) -> u32vec1: ...
@overload
def packUnorm(t: ctypes.c_uint64, v: glm_typing.F32Vector1, /) -> u64vec1: ...
@overload
def packUnorm(t: ctypes.c_uint64, v: _NF32DFV1T, /) -> u64vec1: ...
@overload
def packUnorm(t: ctypes.c_uint8, v: glm_typing.F32Vector2, /) -> u8vec2: ...
@overload
def packUnorm(t: ctypes.c_uint8, v: _NF32DFV2T, /) -> u8vec2: ...
@overload
def packUnorm(t: ctypes.c_uint16, v: glm_typing.F32Vector2, /) -> u16vec2: ...
@overload
def packUnorm(t: ctypes.c_uint16, v: _NF32DFV2T, /) -> u16vec2: ...
@overload
def packUnorm(t: ctypes.c_uint32, v: glm_typing.F32Vector2, /) -> u32vec2: ...
@overload
def packUnorm(t: ctypes.c_uint32, v: _NF32DFV2T, /) -> u32vec2: ...
@overload
def packUnorm(t: ctypes.c_uint64, v: glm_typing.F32Vector2, /) -> u64vec2: ...
@overload
def packUnorm(t: ctypes.c_uint64, v: _NF32DFV2T, /) -> u64vec2: ...
@overload
def packUnorm(t: ctypes.c_uint8, v: glm_typing.F32Vector3, /) -> u8vec3: ...
@overload
def packUnorm(t: ctypes.c_uint8, v: _NF32DFV3T, /) -> u8vec3: ...
@overload
def packUnorm(t: ctypes.c_uint16, v: glm_typing.F32Vector3, /) -> u16vec3: ...
@overload
def packUnorm(t: ctypes.c_uint16, v: _NF32DFV3T, /) -> u16vec3: ...
@overload
def packUnorm(t: ctypes.c_uint32, v: glm_typing.F32Vector3, /) -> u32vec3: ...
@overload
def packUnorm(t: ctypes.c_uint32, v: _NF32DFV3T, /) -> u32vec3: ...
@overload
def packUnorm(t: ctypes.c_uint64, v: glm_typing.F32Vector3, /) -> u64vec3: ...
@overload
def packUnorm(t: ctypes.c_uint64, v: _NF32DFV3T, /) -> u64vec3: ...
@overload
def packUnorm(t: ctypes.c_uint8, v: glm_typing.F32Vector4, /) -> u8vec4: ...
@overload
def packUnorm(t: ctypes.c_uint8, v: _NF32DFV4T, /) -> u8vec4: ...
@overload
def packUnorm(t: ctypes.c_uint16, v: glm_typing.F32Vector4, /) -> u16vec4: ...
@overload
def packUnorm(t: ctypes.c_uint16, v: _NF32DFV4T, /) -> u16vec4: ...
@overload
def packUnorm(t: ctypes.c_uint32, v: glm_typing.F32Vector4, /) -> u32vec4: ...
@overload
def packUnorm(t: ctypes.c_uint32, v: _NF32DFV4T, /) -> u32vec4: ...
@overload
def packUnorm(t: ctypes.c_uint64, v: glm_typing.F32Vector4, /) -> u64vec4: ...
@overload
def packUnorm(t: ctypes.c_uint64, v: _NF32DFV4T, /) -> u64vec4: ...

def packUnorm1x16(v: float, /) -> int: ...

def packUnorm1x5_1x6_1x5(v: glm_typing.F32Vector3, /) -> int: ...

def packUnorm2x4(v: glm_typing.F32Vector2, /) -> int: ...

def packUnorm2x8(v: glm_typing.F32Vector2, /) -> int: ...

def packUnorm3x10_1x2(v: glm_typing.F32Vector4, /) -> int: ...

def packUnorm4x16(v: glm_typing.F32Vector4, /) -> int: ...

def packUnorm4x4(v: glm_typing.F32Vector4, /) -> int: ...

def unpackF2x11_1x10(p: int, /) -> vec3: ...

def unpackF3x9_E1x5(p: int, /) -> vec3: ...

@overload
def unpackHalf(v: glm_typing.U16Vector1, /) -> vec1: ...
@overload
def unpackHalf(v: glm_typing.U16Vector2, /) -> vec2: ...
@overload
def unpackHalf(v: glm_typing.U16Vector3, /) -> vec3: ...
@overload
def unpackHalf(v: glm_typing.U16Vector4, /) -> vec4: ...

def unpackHalf1x16(p: int, /) -> float: ...

def unpackI3x10_1x2(p: int, /) -> ivec4: ...

def unpackInt2x16(p: int, /) -> i16vec2: ...

def unpackInt2x32(p: int, /) -> i32vec2: ...

def unpackInt2x8(p: int, /) -> i8vec2: ...

def unpackInt4x16(p: int, /) -> i16vec4: ...

def unpackInt4x8(p: int, /) -> i8vec4: ...

def unpackRGBM(p: glm_typing.F32Vector4, /) -> vec3: ...

@overload
def unpackSnorm(t: ctypes.c_float, v: glm_typing.I32Vector1, /) -> vec1: ...
@overload
def unpackSnorm(t: ctypes.c_float, v: _NI32IUV1T, /) -> vec1: ...
@overload
def unpackSnorm(t: ctypes.c_double, v: glm_typing.I32Vector1, /) -> dvec1: ...
@overload
def unpackSnorm(t: ctypes.c_double, v: _NI32IUV1T, /) -> dvec1: ...
@overload
def unpackSnorm(t: ctypes.c_float, v: glm_typing.I32Vector2, /) -> vec2: ...
@overload
def unpackSnorm(t: ctypes.c_float, v: _NI32IUV2T, /) -> vec2: ...
@overload
def unpackSnorm(t: ctypes.c_double, v: glm_typing.I32Vector2, /) -> dvec2: ...
@overload
def unpackSnorm(t: ctypes.c_double, v: _NI32IUV2T, /) -> dvec2: ...
@overload
def unpackSnorm(t: ctypes.c_float, v: glm_typing.I32Vector3, /) -> vec3: ...
@overload
def unpackSnorm(t: ctypes.c_float, v: _NI32IUV3T, /) -> vec3: ...
@overload
def unpackSnorm(t: ctypes.c_double, v: glm_typing.I32Vector3, /) -> dvec3: ...
@overload
def unpackSnorm(t: ctypes.c_double, v: _NI32IUV3T, /) -> dvec3: ...
@overload
def unpackSnorm(t: ctypes.c_float, v: glm_typing.I32Vector4, /) -> vec4: ...
@overload
def unpackSnorm(t: ctypes.c_float, v: _NI32IUV4T, /) -> vec4: ...
@overload
def unpackSnorm(t: ctypes.c_double, v: glm_typing.I32Vector4, /) -> dvec4: ...
@overload
def unpackSnorm(t: ctypes.c_double, v: _NI32IUV4T, /) -> dvec4: ...

def unpackSnorm1x16(p: int, /) -> float: ...

def unpackSnorm1x8(p: int, /) -> float: ...

def unpackSnorm2x8(p: int, /) -> vec2: ...

def unpackSnorm3x10_1x2(p: int, /) -> vec4: ...

def unpackSnorm4x16(p: int, /) -> vec4: ...

def unpackU3x10_1x2(p: int, /) -> uvec4: ...

def unpackUint2x16(p: int, /) -> u16vec2: ...

def unpackUint2x32(p: int, /) -> u32vec2: ...

def unpackUint2x8(p: int, /) -> u8vec2: ...

def unpackUint4x16(p: int, /) -> u16vec4: ...

def unpackUint4x8(p: int, /) -> u8vec4: ...

@overload
def unpackUnorm(t: ctypes.c_float, v: glm_typing.I32Vector1, /) -> vec1: ...
@overload
def unpackUnorm(t: ctypes.c_float, v: _NI32IUV1T, /) -> vec1: ...
@overload
def unpackUnorm(t: ctypes.c_double, v: glm_typing.I32Vector1, /) -> dvec1: ...
@overload
def unpackUnorm(t: ctypes.c_double, v: _NI32IUV1T, /) -> dvec1: ...
@overload
def unpackUnorm(t: ctypes.c_float, v: glm_typing.I32Vector2, /) -> vec2: ...
@overload
def unpackUnorm(t: ctypes.c_float, v: _NI32IUV2T, /) -> vec2: ...
@overload
def unpackUnorm(t: ctypes.c_double, v: glm_typing.I32Vector2, /) -> dvec2: ...
@overload
def unpackUnorm(t: ctypes.c_double, v: _NI32IUV2T, /) -> dvec2: ...
@overload
def unpackUnorm(t: ctypes.c_float, v: glm_typing.I32Vector3, /) -> vec3: ...
@overload
def unpackUnorm(t: ctypes.c_float, v: _NI32IUV3T, /) -> vec3: ...
@overload
def unpackUnorm(t: ctypes.c_double, v: glm_typing.I32Vector3, /) -> dvec3: ...
@overload
def unpackUnorm(t: ctypes.c_double, v: _NI32IUV3T, /) -> dvec3: ...
@overload
def unpackUnorm(t: ctypes.c_float, v: glm_typing.I32Vector4, /) -> vec4: ...
@overload
def unpackUnorm(t: ctypes.c_float, v: _NI32IUV4T, /) -> vec4: ...
@overload
def unpackUnorm(t: ctypes.c_double, v: glm_typing.I32Vector4, /) -> dvec4: ...
@overload
def unpackUnorm(t: ctypes.c_double, v: _NI32IUV4T, /) -> dvec4: ...

def unpackUnorm1x16(p: int, /) -> float: ...

def unpackUnorm1x5_1x6_1x5(p: int, /) -> vec3: ...

def unpackUnorm1x8(p: int, /) -> float: ...

def unpackUnorm2x3_1x2(p: int, /) -> vec3: ...

def unpackUnorm2x4(p: int, /) -> vec2: ...

def unpackUnorm2x8(p: int, /) -> vec2: ...

def unpackUnorm3x10_1x2(p: int, /) -> vec4: ...

def unpackUnorm3x5_1x1(p: int, /) -> vec4: ...

def unpackUnorm4x16(p: int, /) -> vec4: ...

def unpackUnorm4x4(p: int, /) -> vec4: ...


@overload
def eulerAngles(x: glm_typing.F32Quaternion, /) -> vec3: ...
@overload
def eulerAngles(x: dquat, /) -> dvec3: ...

@overload
def mat3_cast(x: glm_typing.F32Quaternion, /) -> mat3: ...
@overload
def mat3_cast(x: dquat, /) -> dmat3: ...

@overload
def mat4_cast(x: glm_typing.F32Quaternion, /) -> mat4: ...
@overload
def mat4_cast(x: dquat, /) -> dmat4: ...

def pitch(x: glm_typing.AnyAnyQuaternion, /) -> float: ...

@overload
def quatLookAtLH(direction: glm_typing.F32Vector3, up: glm_typing.F32Vector3, /) -> quat: ...
@overload
def quatLookAtLH(direction: dvec3, up: dvec3, /) -> dquat: ...

@overload
def quatLookAtRH(direction: glm_typing.F32Vector3, up: glm_typing.F32Vector3, /) -> quat: ...
@overload
def quatLookAtRH(direction: dvec3, up: dvec3, /) -> dquat: ...

@overload
def quatLookAt(direction: glm_typing.F32Vector3, up: glm_typing.F32Vector3, /) -> quat: ...
@overload
def quatLookAt(direction: dvec3, up: dvec3, /) -> dquat: ...

@overload
def quat_cast(x: Union[glm_typing.F32Matrix3x3, glm_typing.F32Matrix4x4], /) -> quat: ...
@overload
def quat_cast(x: Union[dmat3, dmat4], /) -> quat: ...

def roll(x: glm_typing.AnyAnyQuaternion, /) -> float: ...

def yaw(x: glm_typing.AnyAnyQuaternion, /) -> float: ...


def ballRand(Radius: glm_typing.Number, /) -> vec3: ...

def circularRand(Radius: glm_typing.Number, /) -> vec2: ...

def diskRand(Radius: glm_typing.Number, /) -> vec2: ...

@overload
def gaussRand(Mean: glm_typing.Number, Deviation: glm_typing.Number, /) -> float: ...
@overload
def gaussRand(Mean: glm_typing.F32Vector1, Deviation: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def gaussRand(Mean: glm_typing.F32Vector2, Deviation: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def gaussRand(Mean: glm_typing.F32Vector3, Deviation: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def gaussRand(Mean: glm_typing.F32Vector4, Deviation: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def gaussRand(Mean: _NF32VT, Deviation: _NF32VT, /) -> _NF32VT: ...

@overload
def linearRand(Min: glm_typing.Number, Max: glm_typing.Number, /) -> float: ...
@overload
def linearRand(Min: glm_typing.F32Vector1, Max: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def linearRand(Min: glm_typing.F32Vector2, Max: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def linearRand(Min: glm_typing.F32Vector3, Max: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def linearRand(Min: glm_typing.F32Vector4, Max: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def linearRand(Min: _NF32VT, Max: _NF32VT, /) -> _NF32VT: ...

def setSeed(seed: SupportsInt, /) -> None: ...

def sphericalRand(Radius: glm_typing.Number, /) -> vec3: ...


def acot(x: glm_typing.Number, /) -> float: ...

def acoth(x: glm_typing.Number, /) -> float: ...

def acsc(x: glm_typing.Number, /) -> float: ...

def acsch(x: glm_typing.Number, /) -> float: ...

def asec(x: glm_typing.Number, /) -> float: ...

def asech(x: glm_typing.Number, /) -> float: ...

def cot(x: glm_typing.Number, /) -> float: ...

def coth(x: glm_typing.Number, /) -> float: ...

def csc(x: glm_typing.Number, /) -> float: ...

def csch(x: glm_typing.Number, /) -> float: ...

def sec(x: glm_typing.Number, /) -> float: ...

def sech(x: glm_typing.Number, /) -> float: ...


@overload
def ceilMultiple(v: glm_typing.Number, Multiple: glm_typing.Number, /) -> int: ...
@overload
def ceilMultiple(v: glm_typing.I32Vector1, Multiple: glm_typing.I32Vector1, /) -> ivec1: ...
@overload
def ceilMultiple(v: glm_typing.I32Vector2, Multiple: glm_typing.I32Vector2, /) -> ivec2: ...
@overload
def ceilMultiple(v: glm_typing.I32Vector3, Multiple: glm_typing.I32Vector3, /) -> ivec3: ...
@overload
def ceilMultiple(v: glm_typing.I32Vector4, Multiple: glm_typing.I32Vector4, /) -> ivec4: ...
@overload
def ceilMultiple(v: _NI32IVT, Multiple: _NI32IVT, /) -> _NI32IVT: ...

@overload
def ceilPowerOfTwo(v: glm_typing.Number, Multiple: glm_typing.Number, /) -> int: ...
@overload
def ceilPowerOfTwo(v: glm_typing.I32Vector1, Multiple: glm_typing.I32Vector1, /) -> ivec1: ...
@overload
def ceilPowerOfTwo(v: glm_typing.I32Vector2, Multiple: glm_typing.I32Vector2, /) -> ivec2: ...
@overload
def ceilPowerOfTwo(v: glm_typing.I32Vector3, Multiple: glm_typing.I32Vector3, /) -> ivec3: ...
@overload
def ceilPowerOfTwo(v: glm_typing.I32Vector4, Multiple: glm_typing.I32Vector4, /) -> ivec4: ...
@overload
def ceilPowerOfTwo(v: _NI32IVT, Multiple: _NI32IVT, /) -> _NI32IVT: ...

@overload
def floorMultiple(v: glm_typing.Number, Multiple: glm_typing.Number, /) -> int: ...
@overload
def floorMultiple(v: glm_typing.I32Vector1, Multiple: glm_typing.I32Vector1, /) -> ivec1: ...
@overload
def floorMultiple(v: glm_typing.I32Vector2, Multiple: glm_typing.I32Vector2, /) -> ivec2: ...
@overload
def floorMultiple(v: glm_typing.I32Vector3, Multiple: glm_typing.I32Vector3, /) -> ivec3: ...
@overload
def floorMultiple(v: glm_typing.I32Vector4, Multiple: glm_typing.I32Vector4, /) -> ivec4: ...
@overload
def floorMultiple(v: _NI32IVT, Multiple: _NI32IVT, /) -> _NI32IVT: ...

@overload
def floorPowerOfTwo(v: glm_typing.Number, Multiple: glm_typing.Number, /) -> int: ...
@overload
def floorPowerOfTwo(v: glm_typing.I32Vector1, Multiple: glm_typing.I32Vector1, /) -> ivec1: ...
@overload
def floorPowerOfTwo(v: glm_typing.I32Vector2, Multiple: glm_typing.I32Vector2, /) -> ivec2: ...
@overload
def floorPowerOfTwo(v: glm_typing.I32Vector3, Multiple: glm_typing.I32Vector3, /) -> ivec3: ...
@overload
def floorPowerOfTwo(v: glm_typing.I32Vector4, Multiple: glm_typing.I32Vector4, /) -> ivec4: ...
@overload
def floorPowerOfTwo(v: _NI32IVT, Multiple: _NI32IVT, /) -> _NI32IVT: ...

@overload
def roundMultiple(v: glm_typing.Number, Multiple: glm_typing.Number, /) -> int: ...
@overload
def roundMultiple(v: glm_typing.I32Vector1, Multiple: glm_typing.I32Vector1, /) -> ivec1: ...
@overload
def roundMultiple(v: glm_typing.I32Vector2, Multiple: glm_typing.I32Vector2, /) -> ivec2: ...
@overload
def roundMultiple(v: glm_typing.I32Vector3, Multiple: glm_typing.I32Vector3, /) -> ivec3: ...
@overload
def roundMultiple(v: glm_typing.I32Vector4, Multiple: glm_typing.I32Vector4, /) -> ivec4: ...
@overload
def roundMultiple(v: _NI32IVT, Multiple: _NI32IVT, /) -> _NI32IVT: ...

@overload
def roundPowerOfTwo(v: glm_typing.Number, Multiple: glm_typing.Number, /) -> int: ...
@overload
def roundPowerOfTwo(v: glm_typing.I32Vector1, Multiple: glm_typing.I32Vector1, /) -> ivec1: ...
@overload
def roundPowerOfTwo(v: glm_typing.I32Vector2, Multiple: glm_typing.I32Vector2, /) -> ivec2: ...
@overload
def roundPowerOfTwo(v: glm_typing.I32Vector3, Multiple: glm_typing.I32Vector3, /) -> ivec3: ...
@overload
def roundPowerOfTwo(v: glm_typing.I32Vector4, Multiple: glm_typing.I32Vector4, /) -> ivec4: ...
@overload
def roundPowerOfTwo(v: _NI32IVT, Multiple: _NI32IVT, /) -> _NI32IVT: ...


def make_mat2(x: ctypes.pointer[Any], /) -> mat2x2: ...

def make_mat3(x: ctypes.pointer[Any], /) -> mat3x3: ...

def make_mat4(x: ctypes.pointer[Any], /) -> mat4x4: ...

def make_mat2x2(x: ctypes.pointer[Any], /) -> mat2x2: ...

def make_mat2x3(x: ctypes.pointer[Any], /) -> mat2x3: ...

def make_mat2x4(x: ctypes.pointer[Any], /) -> mat2x4: ...

def make_mat3x2(x: ctypes.pointer[Any], /) -> mat3x2: ...

def make_mat3x3(x: ctypes.pointer[Any], /) -> mat3x3: ...

def make_mat3x4(x: ctypes.pointer[Any], /) -> mat3x4: ...

def make_mat4x2(x: ctypes.pointer[Any], /) -> mat4x2: ...

def make_mat4x3(x: ctypes.pointer[Any], /) -> mat4x3: ...

def make_mat4x4(x: ctypes.pointer[Any], /) -> mat4x4: ...

def make_quat(x: ctypes.pointer[Any], /) -> quat: ...

def make_vec2(x: ctypes.pointer[Any], /) -> vec2: ...

def make_vec3(x: ctypes.pointer[Any], /) -> vec3: ...

def make_vec4(x: ctypes.pointer[Any], /) -> vec4: ...

@overload
def sizeof(x: Type[Union[ctypes.c_bool, ctypes.c_short, ctypes.c_long, ctypes.c_longlong, ctypes.c_byte, ctypes.c_ushort, ctypes.c_ulong, ctypes.c_ulonglong, ctypes.c_ubyte, ctypes.c_double, ctypes.c_float, glm_typing.AnyAnyVecAny, glm_typing.AnyAnyMatAnyxAny, glm_typing.AnyAnyQuat]], /) -> int: ...
@overload
def sizeof(x: Union[ctypes.c_bool, ctypes.c_short, ctypes.c_long, ctypes.c_longlong, ctypes.c_byte, ctypes.c_ushort, ctypes.c_ulong, ctypes.c_ulonglong, ctypes.c_ubyte, ctypes.c_double, ctypes.c_float, array[Any], glm_typing.AnyAnyVecAny, glm_typing.AnyAnyMatAnyxAny, glm_typing.AnyAnyQuat], /) -> int: ...

@overload
def value_ptr(x: Union[glm_typing.F32VecAny, glm_typing.F32MatAnyxAny, glm_typing.F32Quat], /) -> ctypes.pointer[ctypes.c_float]: ...
@overload
def value_ptr(x: Union[glm_typing.D64VecAny, glm_typing.D64MatAnyxAny, glm_typing.D64Quat], /) -> ctypes.pointer[ctypes.c_double]: ...
@overload
def value_ptr(x: Union[glm_typing.I32VecAny, glm_typing.I32MatAnyxAny], /) -> ctypes.pointer[ctypes.c_int32]: ...
@overload
def value_ptr(x: Union[glm_typing.U32VecAny, glm_typing.U32MatAnyxAny], /) -> ctypes.pointer[ctypes.c_uint32]: ...
@overload
def value_ptr(x: glm_typing.I8VecAny, /) -> ctypes.pointer[ctypes.c_int8]: ...
@overload
def value_ptr(x: glm_typing.U8VecAny, /) -> ctypes.pointer[ctypes.c_uint8]: ...
@overload
def value_ptr(x: glm_typing.B8VecAny, /) -> ctypes.pointer[ctypes.c_bool]: ...
@overload
def value_ptr(x: glm_typing.I16VecAny, /) -> ctypes.pointer[ctypes.c_int16]: ...
@overload
def value_ptr(x: glm_typing.U16VecAny, /) -> ctypes.pointer[ctypes.c_uint16]: ...
@overload
def value_ptr(x: glm_typing.I64VecAny, /) -> ctypes.pointer[ctypes.c_int64]: ...
@overload
def value_ptr(x: glm_typing.U64VecAny, /) -> ctypes.pointer[ctypes.c_uint64]: ...


@overload
def float_distance(x: glm_typing.Number, y: glm_typing.Number) -> float: ...
@overload
def float_distance(x: glm_typing.F32Vector1, y: glm_typing.F32Vector1, /) -> ivec1: ...
@overload
def float_distance(x: dvec1, y: dvec1, /) -> i64vec1: ...
@overload
def float_distance(x: glm_typing.F32Vector2, y: glm_typing.F32Vector2, /) -> ivec2: ...
@overload
def float_distance(x: dvec2, y: dvec2, /) -> i64vec2: ...
@overload
def float_distance(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, /) -> ivec3: ...
@overload
def float_distance(x: dvec3, y: dvec3, /) -> i64vec3: ...
@overload
def float_distance(x: glm_typing.F32Vector4, y: glm_typing.F32Vector4, /) -> ivec4: ...
@overload
def float_distance(x: dvec4, y: dvec4, /) -> i64vec4: ...

@overload
def next_float(x: glm_typing.Number, /) -> float: ...
@overload
def next_float(x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def next_float(x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def next_float(x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def next_float(x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def next_float(x: _NF32DFVT, /) -> _NF32DFVT: ...
@overload
def next_float(x: glm_typing.Number, ULPs: glm_typing.Number, /) -> float: ...
@overload
def next_float(x: glm_typing.F32Vector1, ULPs: glm_typing.Number, /) -> vec1: ...
@overload
def next_float(x: glm_typing.F32Vector2, ULPs: glm_typing.Number, /) -> vec2: ...
@overload
def next_float(x: glm_typing.F32Vector3, ULPs: glm_typing.Number, /) -> vec3: ...
@overload
def next_float(x: glm_typing.F32Vector4, ULPs: glm_typing.Number, /) -> vec4: ...
@overload
def next_float(x: _NF32DFVT, ULPs: glm_typing.Number, /) -> _NF32DFVT: ...
@overload
def next_float(x: glm_typing.F32Vector1, ULPs: glm_typing.I32Vector1, /) -> vec1: ...
@overload
def next_float(x: _NF32DFV1T, ULPs: glm_typing.I32Vector1, /) -> _NF32DFV1T: ...
@overload
def next_float(x: glm_typing.F32Vector2, ULPs: glm_typing.I32Vector2, /) -> vec2: ...
@overload
def next_float(x: _NF32DFV2T, ULPs: glm_typing.I32Vector2, /) -> _NF32DFV2T: ...
@overload
def next_float(x: glm_typing.F32Vector3, ULPs: glm_typing.I32Vector3, /) -> vec3: ...
@overload
def next_float(x: _NF32DFV3T, ULPs: glm_typing.I32Vector3, /) -> _NF32DFV3T: ...
@overload
def next_float(x: glm_typing.F32Vector4, ULPs: glm_typing.I32Vector4, /) -> vec4: ...
@overload
def next_float(x: _NF32DFV4T, ULPs: glm_typing.I32Vector4, /) -> _NF32DFV4T: ...

@overload
def prev_float(x: glm_typing.Number, /) -> float: ...
@overload
def prev_float(x: glm_typing.F32Vector1, /) -> vec1: ...
@overload
def prev_float(x: glm_typing.F32Vector2, /) -> vec2: ...
@overload
def prev_float(x: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def prev_float(x: glm_typing.F32Vector4, /) -> vec4: ...
@overload
def prev_float(x: _NF32DFVT, /) -> _NF32DFVT: ...
@overload
def prev_float(x: glm_typing.Number, ULPs: glm_typing.Number, /) -> float: ...
@overload
def prev_float(x: glm_typing.F32Vector1, ULPs: glm_typing.Number, /) -> vec1: ...
@overload
def prev_float(x: glm_typing.F32Vector2, ULPs: glm_typing.Number, /) -> vec2: ...
@overload
def prev_float(x: glm_typing.F32Vector3, ULPs: glm_typing.Number, /) -> vec3: ...
@overload
def prev_float(x: glm_typing.F32Vector4, ULPs: glm_typing.Number, /) -> vec4: ...
@overload
def prev_float(x: _NF32DFVT, ULPs: glm_typing.Number, /) -> _NF32DFVT: ...
@overload
def prev_float(x: glm_typing.F32Vector1, ULPs: glm_typing.I32Vector1, /) -> vec1: ...
@overload
def prev_float(x: _NF32DFV1T, ULPs: glm_typing.I32Vector1, /) -> _NF32DFV1T: ...
@overload
def prev_float(x: glm_typing.F32Vector2, ULPs: glm_typing.I32Vector2, /) -> vec2: ...
@overload
def prev_float(x: _NF32DFV2T, ULPs: glm_typing.I32Vector2, /) -> _NF32DFV2T: ...
@overload
def prev_float(x: glm_typing.F32Vector3, ULPs: glm_typing.I32Vector3, /) -> vec3: ...
@overload
def prev_float(x: _NF32DFV3T, ULPs: glm_typing.I32Vector3, /) -> _NF32DFV3T: ...
@overload
def prev_float(x: glm_typing.F32Vector4, ULPs: glm_typing.I32Vector4, /) -> vec4: ...
@overload
def prev_float(x: _NF32DFV4T, ULPs: glm_typing.I32Vector4, /) -> _NF32DFV4T: ...


def frustumLH_NO(left: glm_typing.Number, right: glm_typing.Number, bottom: glm_typing.Number, top: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def frustumLH_ZO(left: glm_typing.Number, right: glm_typing.Number, bottom: glm_typing.Number, top: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def frustumRH_NO(left: glm_typing.Number, right: glm_typing.Number, bottom: glm_typing.Number, top: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def frustumRH_ZO(left: glm_typing.Number, right: glm_typing.Number, bottom: glm_typing.Number, top: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def frustum(left: glm_typing.Number, right: glm_typing.Number, bottom: glm_typing.Number, top: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def frustumNO(left: glm_typing.Number, right: glm_typing.Number, bottom: glm_typing.Number, top: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def frustumRH(left: glm_typing.Number, right: glm_typing.Number, bottom: glm_typing.Number, top: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def frustumLH(left: glm_typing.Number, right: glm_typing.Number, bottom: glm_typing.Number, top: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def frustumZO(left: glm_typing.Number, right: glm_typing.Number, bottom: glm_typing.Number, top: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def infinitePerspectiveLH(fovy: glm_typing.Number, aspect: glm_typing.Number, near: glm_typing.Number, /) -> mat4x4: ...

def infinitePerspectiveRH(fovy: glm_typing.Number, aspect: glm_typing.Number, near: glm_typing.Number, /) -> mat4x4: ...

def infinitePerspective(fovy: glm_typing.Number, aspect: glm_typing.Number, near: glm_typing.Number, /) -> mat4x4: ...

def orthoLH_NO(left: glm_typing.Number, right: glm_typing.Number, bottom: glm_typing.Number, top: glm_typing.Number, zNear: glm_typing.Number, zFar: glm_typing.Number, /) -> mat4x4: ...

def orthoLH_ZO(left: glm_typing.Number, right: glm_typing.Number, bottom: glm_typing.Number, top: glm_typing.Number, zNear: glm_typing.Number, zFar: glm_typing.Number, /) -> mat4x4: ...

def orthoRH_NO(left: glm_typing.Number, right: glm_typing.Number, bottom: glm_typing.Number, top: glm_typing.Number, zNear: glm_typing.Number, zFar: glm_typing.Number, /) -> mat4x4: ...

def orthoRH_ZO(left: glm_typing.Number, right: glm_typing.Number, bottom: glm_typing.Number, top: glm_typing.Number, zNear: glm_typing.Number, zFar: glm_typing.Number, /) -> mat4x4: ...

def ortho(left: glm_typing.Number, right: glm_typing.Number, bottom: glm_typing.Number, top: glm_typing.Number, zNear: glm_typing.Number, zFar: glm_typing.Number, /) -> mat4x4: ...

def orthoLH(left: glm_typing.Number, right: glm_typing.Number, bottom: glm_typing.Number, top: glm_typing.Number, zNear: glm_typing.Number, zFar: glm_typing.Number, /) -> mat4x4: ...

def orthoNO(left: glm_typing.Number, right: glm_typing.Number, bottom: glm_typing.Number, top: glm_typing.Number, zNear: glm_typing.Number, zFar: glm_typing.Number, /) -> mat4x4: ...

def orthoRH(left: glm_typing.Number, right: glm_typing.Number, bottom: glm_typing.Number, top: glm_typing.Number, zNear: glm_typing.Number, zFar: glm_typing.Number, /) -> mat4x4: ...

def orthoZO(left: glm_typing.Number, right: glm_typing.Number, bottom: glm_typing.Number, top: glm_typing.Number, zNear: glm_typing.Number, zFar: glm_typing.Number, /) -> mat4x4: ...

def perspectiveLH_NO(fovy: glm_typing.Number, aspect: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def perspectiveLH_ZO(fovy: glm_typing.Number, aspect: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def perspectiveRH_NO(fovy: glm_typing.Number, aspect: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def perspectiveRH_ZO(fovy: glm_typing.Number, aspect: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def perspective(fovy: glm_typing.Number, aspect: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def perspectiveLH(fovy: glm_typing.Number, aspect: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def perspectiveNO(fovy: glm_typing.Number, aspect: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def perspectiveRH(fovy: glm_typing.Number, aspect: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def perspectiveZO(fovy: glm_typing.Number, aspect: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def perspectiveFovLH_NO(fov: glm_typing.Number, width: glm_typing.Number, height: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def perspectiveFovLH_ZO(fov: glm_typing.Number, width: glm_typing.Number, height: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def perspectiveFovRH_NO(fov: glm_typing.Number, width: glm_typing.Number, height: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def perspectiveFovRH_ZO(fov: glm_typing.Number, width: glm_typing.Number, height: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def perspectiveFov(fov: glm_typing.Number, width: glm_typing.Number, height: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def perspectiveFovLH(fov: glm_typing.Number, width: glm_typing.Number, height: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def perspectiveFovNO(fov: glm_typing.Number, width: glm_typing.Number, height: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def perspectiveFovRH(fov: glm_typing.Number, width: glm_typing.Number, height: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

def perspectiveFovZO(fov: glm_typing.Number, width: glm_typing.Number, height: glm_typing.Number, near: glm_typing.Number, far: glm_typing.Number, /) -> mat4x4: ...

@overload
def tweakedInfinitePerspective(fovy: glm_typing.Number, aspect: glm_typing.Number, near: glm_typing.Number, /) -> mat4x4: ...
@overload
def tweakedInfinitePerspective(fovy: glm_typing.Number, aspect: glm_typing.Number, near: glm_typing.Number, epsilon: float, /) -> mat4x4: ...


@overload
def pickMatrix(center: glm_typing.F32Vector2, delta: glm_typing.F32Vector2, viewport: glm_typing.F32Vector4, /) -> mat4x4: ...
@overload
def pickMatrix(center: dvec2, delta: dvec2, viewport: dvec4, /) -> dmat4x4: ...

@overload
def projectNO(obj: glm_typing.F32Vector3, model: glm_typing.F32Matrix4x4, proj: glm_typing.F32Matrix4x4, viewport: glm_typing.F32Vector4, /) -> vec3: ...
@overload
def projectNO(obj: dvec3, model: dmat4x4, proj: dmat4x4, viewport: dvec4, /) -> dvec3: ...

@overload
def project(obj: glm_typing.F32Vector3, model: glm_typing.F32Matrix4x4, proj: glm_typing.F32Matrix4x4, viewport: glm_typing.F32Vector4, /) -> vec3: ...
@overload
def project(obj: dvec3, model: dmat4x4, proj: dmat4x4, viewport: dvec4, /) -> dvec3: ...

@overload
def projectZO(obj: glm_typing.F32Vector3, model: glm_typing.F32Matrix4x4, proj: glm_typing.F32Matrix4x4, viewport: glm_typing.F32Vector4, /) -> vec3: ...
@overload
def projectZO(obj: dvec3, model: dmat4x4, proj: dmat4x4, viewport: dvec4, /) -> dvec3: ...

@overload
def unProjectNO(obj: glm_typing.F32Vector3, model: glm_typing.F32Matrix4x4, proj: glm_typing.F32Matrix4x4, viewport: glm_typing.F32Vector4, /) -> vec3: ...
@overload
def unProjectNO(obj: dvec3, model: dmat4x4, proj: dmat4x4, viewport: dvec4, /) -> dvec3: ...

@overload
def unProject(obj: glm_typing.F32Vector3, model: glm_typing.F32Matrix4x4, proj: glm_typing.F32Matrix4x4, viewport: glm_typing.F32Vector4, /) -> vec3: ...
@overload
def unProject(obj: dvec3, model: dmat4x4, proj: dmat4x4, viewport: dvec4, /) -> dvec3: ...

@overload
def unProjectZO(obj: glm_typing.F32Vector3, model: glm_typing.F32Matrix4x4, proj: glm_typing.F32Matrix4x4, viewport: glm_typing.F32Vector4, /) -> vec3: ...
@overload
def unProjectZO(obj: dvec3, model: dmat4x4, proj: dmat4x4, viewport: dvec4, /) -> dvec3: ...


def identity(matrix_type: Type[_MT], /) -> _MT: ...

@overload
def lookAtLH(eye: glm_typing.F32Vector3, center: glm_typing.F32Vector3, up: glm_typing.F32Vector3, /) -> mat4x4: ...
@overload
def lookAtLH(eye: dvec3, center: dvec3, up: dvec3, /) -> dmat4x4: ...

@overload
def lookAtRH(eye: glm_typing.F32Vector3, center: glm_typing.F32Vector3, up: glm_typing.F32Vector3, /) -> mat4x4: ...
@overload
def lookAtRH(eye: dvec3, center: dvec3, up: dvec3, /) -> dmat4x4: ...

@overload
def lookAt(eye: glm_typing.F32Vector3, center: glm_typing.F32Vector3, up: glm_typing.F32Vector3, /) -> mat4x4: ...
@overload
def lookAt(eye: dvec3, center: dvec3, up: dvec3, /) -> dmat4x4: ...

@overload
def rotate(angle: glm_typing.Number, axis: glm_typing.F32Vector3, /) -> mat4x4: ...
@overload
def rotate(angle: glm_typing.Number, axis: dvec3, /) -> dmat4x4: ...
@overload
def rotate(angle: glm_typing.Number, /) -> mat3x3: ...
@overload
def rotate(m: glm_typing.F32Matrix4x4, angle: glm_typing.Number, axis: glm_typing.F32Vector3, /) -> mat4x4: ...
@overload
def rotate(m: dmat4x4, angle: glm_typing.Number, axis: dvec3, /) -> dmat4x4: ...
@overload
def rotate(m: glm_typing.F32Matrix3x3, angle: glm_typing.Number, /) -> mat3x3: ...
@overload
def rotate(m: dmat3x3, angle: glm_typing.Number, /) -> dmat3x3: ...
@overload
def rotate(v: glm_typing.F32Vector2, angle: glm_typing.Number, /) -> vec2: ...
@overload
def rotate(v: dvec2, angle: glm_typing.Number, /) -> dvec2: ...
@overload
def rotate(v: glm_typing.F32Vector3, angle: glm_typing.Number, normal: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def rotate(v: dvec3, angle: glm_typing.Number, normal: dvec3, /) -> dvec3: ...
@overload
def rotate(v: glm_typing.F32Vector4, angle: glm_typing.Number, normal: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def rotate(v: dvec4, angle: glm_typing.Number, normal: dvec3, /) -> dvec4: ...
@overload
def rotate(v: quat, angle: glm_typing.Number, normal: glm_typing.F32Vector3, /) -> quat: ...
@overload
def rotate(v: dquat, angle: glm_typing.Number, normal: dvec3, /) -> dquat: ...

@overload
def rotate_slow(m: glm_typing.F32Matrix4x4, angle: glm_typing.Number, axis: glm_typing.F32Vector3, /) -> mat4x4: ...
@overload
def rotate_slow(m: dmat4x4, angle: glm_typing.Number, axis: dvec3, /) -> dmat4x4: ...

@overload
def scale(v: glm_typing.F32Vector3, /) -> mat4x4: ...
@overload
def scale(v: dvec3, /) -> dmat4x4: ...
@overload
def scale(v: glm_typing.F32Vector2, /) -> mat3x3: ...
@overload
def scale(v: dvec2, /) -> mat3x3: ...
@overload
def scale(m: glm_typing.F32Matrix4x4, v: glm_typing.F32Vector3, /) -> mat4x4: ...
@overload
def scale(m: dmat4x4, v: dvec3, /) -> dmat4x4: ...
@overload
def scale(m: glm_typing.F32Matrix3x3, v: glm_typing.F32Vector2, /) -> mat3x3: ...
@overload
def scale(m: dmat3x3, v: dvec2, /) -> dmat3x3: ...

@overload
def scale_slow(m: glm_typing.F32Matrix4x4, v: glm_typing.F32Vector3, /) -> mat4x4: ...
@overload
def scale_slow(m: dmat4x4, v: dvec3, /) -> dmat4x4: ...

@overload
def translate(v: glm_typing.F32Vector3, /) -> mat4x4: ...
@overload
def translate(v: dvec3, /) -> dmat4x4: ...
@overload
def translate(v: glm_typing.F32Vector2, /) -> mat3x3: ...
@overload
def translate(v: dvec2, /) -> dmat3x3: ...
@overload
def translate(m: glm_typing.F32Matrix4x4, v: glm_typing.F32Vector3, /) -> mat4x4: ...
@overload
def translate(m: dmat4x4, v: dvec3, /) -> dmat4x4: ...
@overload
def translate(m: glm_typing.F32Matrix3x3, v: glm_typing.F32Vector2, /) -> mat3x3: ...
@overload
def translate(m: dmat3x3, v: dvec2, /) -> dmat3x3: ...


@overload
def conjugate(q: glm_typing.F32Quaternion, /) -> quat: ...
@overload
def conjugate(q: _NF32QT, /) -> _NF32QT: ...

@overload
def lerp(x: glm_typing.F32Quaternion, y: glm_typing.F32Quaternion, a: glm_typing.Number, /) -> quat: ...
@overload
def lerp(x: _NF32QT, y: _NF32QT, a: glm_typing.Number, /) -> _NF32QT: ...
@overload
def lerp(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, a: glm_typing.Number, /) -> vec3: ...
@overload
def lerp(x: _NF32DFV3T, y: _NF32DFV3T, a: glm_typing.Number, /) -> _NF32DFV3T: ...

@overload
def slerp(x: glm_typing.F32Quaternion, y: glm_typing.F32Quaternion, a: glm_typing.Number, /) -> quat: ...
@overload
def slerp(x: _NF32QT, y: _NF32QT, a: glm_typing.Number, /) -> _NF32QT: ...
@overload
def slerp(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, a: glm_typing.Number, /) -> vec3: ...
@overload
def slerp(x: _NF32DFV3T, y: _NF32DFV3T, a: glm_typing.Number, /) -> _NF32DFV3T: ...


def angle(x: _QT, /) -> float: ...

@overload
def angleAxis(angle: glm_typing.Number, axis: glm_typing.F32Vector3, /) -> quat: ...
@overload
def angleAxis(angle: glm_typing.Number, axis: dvec3, /) -> dquat: ...

@overload
def axis(x: glm_typing.F32Quat, /) -> vec3: ...
@overload
def axis(x: dquat, /) -> dvec3: ...


@overload
def decompose(modelMatrix: glm_typing.F32Matrix3x3, scale: glm_typing.F32Vector3, orientation: glm_typing.F32Quaternion, translation: glm_typing.F32Vector3, skew: glm_typing.F32Vector3, perspective: glm_typing.F32Vector4, /) -> bool: ...
@overload
def decompose(modelMatrix: dmat4x4, scale: dvec3, orientation: dquat, translation: dvec3, skew: dvec3, perspective: dvec4, /) -> bool: ...


@overload
def shearX(m: glm_typing.F32Matrix3x3, y: glm_typing.Number, /) -> mat3x3: ...
@overload
def shearX(m: _NF32M3X3T, y: glm_typing.Number, /) -> _NF32M3X3T: ...

@overload
def shearY(m: glm_typing.F32Matrix3x3, y: glm_typing.Number, /) -> mat3x3: ...
@overload
def shearY(m: _NF32M3X3T, y: glm_typing.Number, /) -> _NF32M3X3T: ...



@overload
def distance2(p0: glm_typing.F32Vector1, p1: glm_typing.F32Vector1, /) -> float: ...
@overload
def distance2(p0: glm_typing.F32Vector2, p1: glm_typing.F32Vector2, /) -> float: ...
@overload
def distance2(p0: glm_typing.F32Vector3, p1: glm_typing.F32Vector3, /) -> float: ...
@overload
def distance2(p0: glm_typing.F32Vector4, p1: glm_typing.F32Vector4, /) -> float: ...
@overload
def distance2(p0: _NF32DFVT, p1: _NF32DFVT, /) -> float: ...

@overload
def l1Norm(v: glm_typing.FDAnyVector3, /) -> float: ...
@overload
def l1Norm(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, /) -> float: ...
@overload
def l1Norm(x: _NF32DFV3T, y: _NF32DFV3T, /) -> float: ...

@overload
def l2Norm(v: glm_typing.FDAnyVector3, /) -> float: ...
@overload
def l2Norm(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, /) -> float: ...
@overload
def l2Norm(x: _NF32DFV3T, y: _NF32DFV3T, /) -> float: ...

@overload
def lMaxNorm(v: glm_typing.FDAnyVector3, /) -> float: ...
@overload
def lMaxNorm(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, /) -> float: ...
@overload
def lMaxNorm(x: _NF32DFV3T, y: _NF32DFV3T, /) -> float: ...

@overload
def length2(p0: glm_typing.F32Vector1, p1: glm_typing.F32Vector1, /) -> float: ...
@overload
def length2(p0: glm_typing.F32Vector2, p1: glm_typing.F32Vector2, /) -> float: ...
@overload
def length2(p0: glm_typing.F32Vector3, p1: glm_typing.F32Vector3, /) -> float: ...
@overload
def length2(p0: glm_typing.F32Vector4, p1: glm_typing.F32Vector4, /) -> float: ...
@overload
def length2(p0: _NF32DFVT, p1: _NF32DFVT, /) -> float: ...

@overload
def lxNorm(v: glm_typing.FDAnyVector3, /) -> float: ...
@overload
def lxNorm(x: glm_typing.F32Vector3, y: glm_typing.F32Vector3, /) -> float: ...
@overload
def lxNorm(x: _NF32DFV3T, y: _NF32DFV3T, /) -> float: ...


@overload
def euclidean(polar: glm_typing.F32Vector2, /) -> vec3: ...
@overload
def euclidean(polar: dvec2, /) -> dvec3: ...

@overload
def polar(euclidean: glm_typing.F32Vector3, /) -> vec3: ...
@overload
def polar(euclidean: _NF32DFV3T, /) -> _NF32DFV3T: ...


@overload
def orientation(Normal: glm_typing.F32Vector3, Up: glm_typing.F32Vector3, /) -> mat4x4: ...
@overload
def orientation(Normal: dvec3, Up: dvec3, /) -> dmat4x4: ...

@overload
def rotateX(v: glm_typing.F32Vector3, angle: glm_typing.Number) -> vec3: ...
@overload
def rotateX(v: _NF32DFV3T, angle: glm_typing.Number) -> _NF32DFV3T: ...
@overload
def rotateX(v: glm_typing.F32Vector4, angle: glm_typing.Number) -> vec4: ...
@overload
def rotateX(v: _NF32DFV4T, angle: glm_typing.Number) -> _NF32DFV4T: ...

@overload
def rotateY(v: glm_typing.F32Vector3, angle: glm_typing.Number) -> vec3: ...
@overload
def rotateY(v: _NF32DFV3T, angle: glm_typing.Number) -> _NF32DFV3T: ...
@overload
def rotateY(v: glm_typing.F32Vector4, angle: glm_typing.Number) -> vec4: ...
@overload
def rotateY(v: _NF32DFV4T, angle: glm_typing.Number) -> _NF32DFV4T: ...

@overload
def rotateZ(v: glm_typing.F32Vector3, angle: glm_typing.Number) -> vec3: ...
@overload
def rotateZ(v: _NF32DFV3T, angle: glm_typing.Number) -> _NF32DFV3T: ...
@overload
def rotateZ(v: glm_typing.F32Vector4, angle: glm_typing.Number) -> vec4: ...
@overload
def rotateZ(v: _NF32DFV4T, angle: glm_typing.Number) -> _NF32DFV4T: ...

__all__ = ['abs', 'acos', 'acosh', 'acot', 'acoth', 'acsc', 'acsch', 'add', 'affineInverse', 'all', 'and_', 'angle', 'angleAxis', 'any', 'array', 'asec', 'asech', 'asin', 'asinh', 'atan', 'atanh', 'axis', 'ballRand', 'bitCount', 'bitfieldExtract', 'bitfieldInsert', 'bitfieldReverse', 'bool_', 'bvec1', 'bvec2', 'bvec3', 'bvec4', 'c_int16', 'c_int32', 'c_int64', 'c_int8', 'c_uint16', 'c_uint32', 'c_uint64', 'c_uint8', 'ceil', 'ceilMultiple', 'ceilPowerOfTwo', 'circularRand', 'clamp', 'cmp', 'column', 'conjugate', 'convertLinearToSRGB', 'convertSRGBToLinear', 'cos', 'cosh', 'cot', 'coth', 'cross', 'csc', 'csch', 'decompose', 'degrees', 'determinant', 'diskRand', 'distance', 'distance2', 'div', 'dmat2', 'dmat2x2', 'dmat2x3', 'dmat2x4', 'dmat3', 'dmat3x2', 'dmat3x3', 'dmat3x4', 'dmat4', 'dmat4x2', 'dmat4x3', 'dmat4x4', 'dmvec2', 'dmvec3', 'dmvec4', 'dot', 'double', 'dquat', 'dvec1', 'dvec2', 'dvec3', 'dvec4', 'e', 'epsilon', 'epsilonEqual', 'epsilonNotEqual', 'equal', 'euclidean', 'euler', 'eulerAngles', 'exp', 'exp2', 'f32mat2', 'f32mat2x2', 'f32mat2x3', 'f32mat2x4', 'f32mat3', 'f32mat3x2', 'f32mat3x3', 'f32mat3x4', 'f32mat4', 'f32mat4x2', 'f32mat4x3', 'f32mat4x4', 'f32quat', 'f32vec1', 'f32vec2', 'f32vec3', 'f32vec4', 'f64mat2', 'f64mat2x2', 'f64mat2x3', 'f64mat2x4', 'f64mat3', 'f64mat3x2', 'f64mat3x3', 'f64mat3x4', 'f64mat4', 'f64mat4x2', 'f64mat4x3', 'f64mat4x4', 'f64quat', 'f64vec1', 'f64vec2', 'f64vec3', 'f64vec4', 'faceforward', 'findLSB', 'findMSB', 'float32', 'float64', 'floatBitsToInt', 'floatBitsToUint', 'float_', 'float_distance', 'floor', 'floorMultiple', 'floorPowerOfTwo', 'floordiv', 'fma', 'fmat2', 'fmat2x2', 'fmat2x3', 'fmat2x4', 'fmat3', 'fmat3x2', 'fmat3x3', 'fmat3x4', 'fmat4', 'fmat4x2', 'fmat4x3', 'fmat4x4', 'fmax', 'fmin', 'four_over_pi', 'fquat', 'fract', 'frexp', 'frustum', 'frustumLH', 'frustumLH_NO', 'frustumLH_ZO', 'frustumNO', 'frustumRH', 'frustumRH_NO', 'frustumRH_ZO', 'frustumZO', 'fvec1', 'fvec2', 'fvec3', 'fvec4', 'gaussRand', 'golden_ratio', 'greaterThan', 'greaterThanEqual', 'half_pi', 'i16vec1', 'i16vec2', 'i16vec3', 'i16vec4', 'i32mat2', 'i32mat2x2', 'i32mat2x3', 'i32mat2x4', 'i32mat3', 'i32mat3x2', 'i32mat3x3', 'i32mat3x4', 'i32mat4', 'i32mat4x2', 'i32mat4x3', 'i32mat4x4', 'i32vec1', 'i32vec2', 'i32vec3', 'i32vec4', 'i64vec1', 'i64vec2', 'i64vec3', 'i64vec4', 'i8vec1', 'i8vec2', 'i8vec3', 'i8vec4', 'identity', 'if_else', 'imat2', 'imat2x2', 'imat2x3', 'imat2x4', 'imat3', 'imat3x2', 'imat3x3', 'imat3x4', 'imat4', 'imat4x2', 'imat4x3', 'imat4x4', 'imulExtended', 'imvec2', 'imvec3', 'imvec4', 'infinitePerspective', 'infinitePerspectiveLH', 'infinitePerspectiveRH', 'int16', 'int32', 'int64', 'int8', 'intBitsToFloat', 'inv', 'inverse', 'inverseTranspose', 'inversesqrt', 'iround', 'isinf', 'isnan', 'ivec1', 'ivec2', 'ivec3', 'ivec4', 'l1Norm', 'l2Norm', 'lMaxNorm', 'ldexp', 'length2', 'lerp', 'lessThan', 'lessThanEqual', 'linearRand', 'ln_ln_two', 'ln_ten', 'ln_two', 'log', 'log2', 'lookAt', 'lookAtLH', 'lookAtRH', 'lshift', 'lxNorm', 'make_mat2', 'make_mat2x2', 'make_mat2x3', 'make_mat2x4', 'make_mat3', 'make_mat3x2', 'make_mat3x3', 'make_mat3x4', 'make_mat4', 'make_mat4x2', 'make_mat4x3', 'make_mat4x4', 'make_quat', 'make_vec2', 'make_vec3', 'make_vec4', 'mat2', 'mat2x2', 'mat2x3', 'mat2x4', 'mat3', 'mat3_cast', 'mat3x2', 'mat3x3', 'mat3x4', 'mat4', 'mat4_cast', 'mat4x2', 'mat4x3', 'mat4x4', 'matrixCompMult', 'max', 'min', 'mix', 'modf', 'mul', 'mvec2', 'mvec3', 'mvec4', 'neg', 'next_float', 'normalize', 'notEqual', 'not_', 'one', 'one_over_pi', 'one_over_root_two', 'or_', 'orientation', 'ortho', 'orthoLH', 'orthoLH_NO', 'orthoLH_ZO', 'orthoNO', 'orthoRH', 'orthoRH_NO', 'orthoRH_ZO', 'orthoZO', 'outerProduct', 'packDouble2x32', 'packF2x11_1x10', 'packF3x9_E1x5', 'packHalf', 'packHalf1x16', 'packHalf2x16', 'packHalf4x16', 'packI3x10_1x2', 'packInt2x16', 'packInt2x32', 'packInt2x8', 'packInt4x16', 'packInt4x8', 'packRGBM', 'packSnorm', 'packSnorm1x16', 'packSnorm1x8', 'packSnorm2x16', 'packSnorm2x8', 'packSnorm3x10_1x2', 'packSnorm4x16', 'packSnorm4x8', 'packU3x10_1x2', 'packUint2x16', 'packUint2x32', 'packUint2x8', 'packUint4x16', 'packUint4x8', 'packUnorm', 'packUnorm1x16', 'packUnorm1x5_1x6_1x5', 'packUnorm2x16', 'packUnorm2x4', 'packUnorm2x8', 'packUnorm3x10_1x2', 'packUnorm4x16', 'packUnorm4x4', 'packUnorm4x8', 'perlin', 'perspective', 'perspectiveFov', 'perspectiveFovLH', 'perspectiveFovLH_NO', 'perspectiveFovLH_ZO', 'perspectiveFovNO', 'perspectiveFovRH', 'perspectiveFovRH_NO', 'perspectiveFovRH_ZO', 'perspectiveFovZO', 'perspectiveLH', 'perspectiveLH_NO', 'perspectiveLH_ZO', 'perspectiveNO', 'perspectiveRH', 'perspectiveRH_NO', 'perspectiveRH_ZO', 'perspectiveZO', 'pi', 'pickMatrix', 'pitch', 'polar', 'pos', 'pow', 'prev_float', 'project', 'projectNO', 'projectZO', 'quat', 'quatLookAt', 'quatLookAtLH', 'quatLookAtRH', 'quater_pi', 'radians', 'reflect', 'refract', 'roll', 'root_five', 'root_half_pi', 'root_ln_four', 'root_pi', 'root_three', 'root_two', 'root_two_pi', 'round', 'roundEven', 'roundMultiple', 'roundPowerOfTwo', 'row', 'rshift', 'sec', 'sech', 'setSeed', 'shearX', 'shearY', 'sign', 'simplex', 'sin', 'sinh', 'sizeof', 'slerp', 'smoothstep', 'sphericalRand', 'sqrt', 'step', 'sub', 'tan', 'tanh', 'third', 'three_over_two_pi', 'transpose', 'trunc', 'tweakedInfinitePerspective', 'two_over_pi', 'two_over_root_pi', 'two_pi', 'two_thirds', 'u16vec1', 'u16vec2', 'u16vec3', 'u16vec4', 'u32mat2', 'u32mat2x2', 'u32mat2x3', 'u32mat2x4', 'u32mat3', 'u32mat3x2', 'u32mat3x3', 'u32mat3x4', 'u32mat4', 'u32mat4x2', 'u32mat4x3', 'u32mat4x4', 'u32vec1', 'u32vec2', 'u32vec3', 'u32vec4', 'u64vec1', 'u64vec2', 'u64vec3', 'u64vec4', 'u8vec1', 'u8vec2', 'u8vec3', 'u8vec4', 'uaddCarry', 'uint16', 'uint32', 'uint64', 'uint8', 'uintBitsToFloat', 'umat2', 'umat2x2', 'umat2x3', 'umat2x4', 'umat3', 'umat3x2', 'umat3x3', 'umat3x4', 'umat4', 'umat4x2', 'umat4x3', 'umat4x4', 'umulExtended', 'umvec2', 'umvec3', 'umvec4', 'unProject', 'unProjectNO', 'unProjectZO', 'unpackDouble2x32', 'unpackF2x11_1x10', 'unpackF3x9_E1x5', 'unpackHalf', 'unpackHalf1x16', 'unpackHalf2x16', 'unpackI3x10_1x2', 'unpackInt2x16', 'unpackInt2x32', 'unpackInt2x8', 'unpackInt4x16', 'unpackInt4x8', 'unpackRGBM', 'unpackSnorm', 'unpackSnorm1x16', 'unpackSnorm1x8', 'unpackSnorm2x16', 'unpackSnorm2x8', 'unpackSnorm3x10_1x2', 'unpackSnorm4x16', 'unpackSnorm4x8', 'unpackU3x10_1x2', 'unpackUint2x16', 'unpackUint2x32', 'unpackUint2x8', 'unpackUint4x16', 'unpackUint4x8', 'unpackUnorm', 'unpackUnorm1x16', 'unpackUnorm1x5_1x6_1x5', 'unpackUnorm1x8', 'unpackUnorm2x16', 'unpackUnorm2x3_1x2', 'unpackUnorm2x4', 'unpackUnorm2x8', 'unpackUnorm3x10_1x2', 'unpackUnorm3x5_1x1', 'unpackUnorm4x16', 'unpackUnorm4x4', 'unpackUnorm4x8', 'uround', 'usubBorrow', 'uvec1', 'uvec2', 'uvec3', 'uvec4', 'value_ptr', 'vec1', 'vec2', 'vec3', 'vec4', 'xor', 'yaw', 'zero']
