# This file is automatically generated by pyo3_stub_gen
# ruff: noqa: E501, F401

import typing

class Damiao:
    motor_id: int
    master_id: int
    def __new__(cls,motor_id,master_id,limits = ...,timeout_ms = ...): ...
    def enable(self, bus:SocketCanTransport) -> MotorState:
        ...

    def disable(self, bus:SocketCanTransport) -> MotorState:
        ...

    def set_zero(self, bus:SocketCanTransport) -> MotorState:
        ...

    def clear_error(self, bus:SocketCanTransport) -> MotorState:
        ...

    def mit_control(self, bus:SocketCanTransport, setpoint:MitSetpoint) -> MotorState:
        ...

    def ensure_mit_mode(self, bus:SocketCanTransport) -> None:
        r"""
        Force the firmware into MIT control mode (register 10 = 1). Some
        motors ship in POS_VEL/VEL/FORCE_POS, in which case `mit_control` is
        silently ignored.
        """
        ...

    def __repr__(self) -> str:
        ...


class MitLimits:
    p_max: float
    v_max: float
    kp_max: float
    kd_max: float
    t_max: float
    def __new__(cls,p_max = ...,v_max = ...,kp_max = ...,kd_max = ...,t_max = ...): ...
    def __repr__(self) -> str:
        ...

    @staticmethod
    def dm3507() -> MitLimits:
        ...

    @staticmethod
    def dm4310() -> MitLimits:
        ...

    @staticmethod
    def dm4310p() -> MitLimits:
        ...

    @staticmethod
    def dm4340() -> MitLimits:
        ...

    @staticmethod
    def dm4340p() -> MitLimits:
        ...

    @staticmethod
    def dm6006() -> MitLimits:
        ...

    @staticmethod
    def dm6248p() -> MitLimits:
        ...

    @staticmethod
    def dm8006() -> MitLimits:
        ...

    @staticmethod
    def dm8009() -> MitLimits:
        ...

    @staticmethod
    def dm10010() -> MitLimits:
        ...

    @staticmethod
    def dm10010l() -> MitLimits:
        ...

    @staticmethod
    def dmg6215() -> MitLimits:
        ...

    @staticmethod
    def dmh3510() -> MitLimits:
        ...

    @staticmethod
    def dmh6220() -> MitLimits:
        ...

    @staticmethod
    def dmjh11() -> MitLimits:
        ...


class MitSetpoint:
    q: float
    dq: float
    kp: float
    kd: float
    tau: float
    def __new__(cls,q = ...,dq = ...,kp = ...,kd = ...,tau = ...): ...
    def __repr__(self) -> str:
        ...


class MotorState:
    motor_id: int
    error: int
    position: float
    velocity: float
    torque: float
    t_mos: int
    t_rotor: int
    def __repr__(self) -> str:
        ...


class SocketCanTransport:
    def __new__(cls,iface:str): ...
    ...

def mit_setpoint(q = ...,dq = ...,kp = ...,kd = ...,tau = ...) -> MitSetpoint:
    r"""
    Build a `MitSetpoint` (handy when keyword args are awkward).
    """
    ...

