from typing import overload

class Angles:
    def __init__(self, yaw: float, pitch: float, roll: float) -> None: ...
    @property
    def pitch(self) -> float: ...
    @property
    def roll(self) -> float: ...
    @property
    def yaw(self) -> float: ...

class DOF6:
    def __init__(self, yaw: float, pitch: float, roll: float, x: float, y: float, z: float) -> None: ...
    @property
    def pitch(self) -> float: ...
    @property
    def roll(self) -> float: ...
    @property
    def x(self) -> float: ...
    @property
    def y(self) -> float: ...
    @property
    def yaw(self) -> float: ...
    @property
    def z(self) -> float: ...

class IMU:
    def __init__(self, bus: int = ...) -> None: ...
    def acc_angle(self) -> Vector2D: ...
    def acc_g(self) -> Vector3D: ...
    def get_dof(self) -> DOF6: ...
    def gyr_rate(self) -> Vector3D: ...
    def raw_acc(self) -> IntVector3D: ...
    def raw_gyr(self) -> IntVector3D: ...
    def raw_mag(self) -> IntVector3D: ...
    def read_acc(self) -> IntVector3D: ...
    def read_gyr(self) -> IntVector3D: ...
    def read_mag(self) -> IntVector3D: ...
    @property
    def version(self) -> str: ...

class IntVector2D:
    def __init__(self, x: int, y: int) -> None: ...
    @property
    def x(self) -> int: ...
    @property
    def y(self) -> int: ...

class IntVector3D:
    def __init__(self, x: int, y: int, z: int) -> None: ...
    @property
    def x(self) -> int: ...
    @property
    def y(self) -> int: ...
    @property
    def z(self) -> int: ...

class KalmanFilter:
    def __init__(self, imu: IMU, q_angle: float = ..., q_gyro: float = ..., r_angle: float = ..., min_dt: float = ...) -> None: ...
    def step(self) -> Angles: ...

class Time:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, sec: int, usec: int) -> None: ...
    def __add__(self, arg0: Time) -> Time: ...
    def __sub__(self, arg0: Time) -> Time: ...
    @property
    def sec(self) -> int: ...
    @property
    def total_seconds(self) -> float: ...
    @property
    def usec(self) -> int: ...

class Vector2D:
    def __init__(self, x: float, y: float) -> None: ...
    @property
    def x(self) -> float: ...
    @property
    def y(self) -> float: ...

class Vector3D:
    def __init__(self, x: float, y: float, z: float) -> None: ...
    @property
    def x(self) -> float: ...
    @property
    def y(self) -> float: ...
    @property
    def z(self) -> float: ...
