import numpy

class Unit:
    def __init__(self, *args, **kwargs): ...
    def __mul__(self, other: int | float | numpy.ndarray) -> Quantity: ...
    __rmul__ = __mul__

class Quantity:
    def __init__(self, *args, **kwargs): ...
    def to(self, unit: str | Unit = "dimensionless") -> Quantity: ...
    def to_base_units(self, unit: str | Unit = "dimensionless") -> Quantity: ...
    def is_compatible_with(self, unit: str | Unit) -> bool: ...
    @property
    def u(self) -> Unit: ...

    # lists are cast to ndarray
    @property
    def m(self) -> float | int | numpy.ndarray: ...
    def m_as(self, unit: str | Unit) -> float | int | numpy.ndarray: ...

    magnitude = m
    units = u
