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

import builtins
import typing
__all__ = [
    "Tool",
]

@typing.final
class Tool:
    r"""
    Cutting-tool state for adaptive clearing.
    
    Holds the tool centre position, heading, and the steering
    predictor / gyroscope buffers used to smooth the walking path.
    Construct with ``Tool(pos, heading, radius)`` and feed direction
    vectors via ``push_gyro`` between solver steps.
    """
    @property
    def pos(self) -> tuple[builtins.float, builtins.float, builtins.float]:
        r"""
        Tool centre position ``(x, y, z)``.
        """
    @pos.setter
    def pos(self, value: tuple[builtins.float, builtins.float, builtins.float]) -> None:
        r"""
        Set the tool centre position ``(x, y, z)``.
        """
    @property
    def heading(self) -> builtins.float:
        r"""
        Current heading angle in radians.
        """
    @heading.setter
    def heading(self, value: builtins.float) -> None:
        r"""
        Set the heading angle in radians.
        """
    @property
    def radius(self) -> builtins.float:
        r"""
        Tool radius in mm.
        """
    def __new__(cls, pos: tuple[builtins.float, builtins.float, builtins.float], heading: builtins.float, radius: builtins.float) -> Tool:
        r"""
        Create a new tool at *pos* ``(x, y, z)`` with the given *heading*
        (radians) and *radius*.
        """
    def smoothed_heading(self) -> builtins.float:
        r"""
        Gyroscope-smoothed heading (radians), averaged over recent
        direction vectors.
        """
    def push_gyro(self, dir: tuple[builtins.float, builtins.float]) -> None:
        r"""
        Push a direction vector ``(dx, dy)`` into the gyroscope buffer.
        """
    def reset_gyro(self) -> None:
        r"""
        Reset the gyroscope and predictor history to the current heading.
        """
    def update_predictor(self, delta: builtins.float) -> None:
        r"""
        Update the decayed steering predictor with a converged deflection.
        """
    def predicted_angle(self, max_deflection: builtins.float) -> builtins.float:
        r"""
        Predictor seed for the engagement solver, clamped to a fraction
        of *max_deflection*.
        """
    def raw_predictor(self) -> builtins.float:
        r"""
        Raw (un-clamped) predictor value.
        """
    def __repr__(self) -> builtins.str: ...

