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

import builtins
import raygeo
import typing
__all__ = [
    "RampSpec",
    "generate_ramp",
]

@typing.final
class RampSpec:
    r"""
    Parameters for the ``ramp`` assembler.
    """
    @property
    def start(self) -> tuple[builtins.float, builtins.float]: ...
    @property
    def end(self) -> tuple[builtins.float, builtins.float]: ...
    @property
    def z_start(self) -> builtins.float: ...
    @property
    def z_end(self) -> builtins.float: ...
    @property
    def max_ramp_angle_deg(self) -> builtins.float: ...
    @property
    def style(self) -> builtins.str:
        r"""
        ``"linear"`` or ``"zigzag"``.
        """
    @property
    def lateral_amplitude(self) -> builtins.float: ...
    def __eq__(self, other: builtins.object, /) -> builtins.bool: ...
    def __new__(cls, start: tuple[builtins.float, builtins.float], end: tuple[builtins.float, builtins.float], z_start: builtins.float, z_end: builtins.float, max_ramp_angle_deg: builtins.float = 45.0, style: builtins.str = 'zigzag', lateral_amplitude: builtins.float = 2.0) -> RampSpec: ...

def generate_ramp(part: raygeo.ops.part.Part, start: tuple[float, float], end: tuple[float, float], z_start: float, z_end: float, max_ramp_angle_deg: float = 45, style: str = 'zigzag', lateral_amplitude: float = 2, state: raygeo.ops.state.State | None = None) -> raygeo.ops.assembly.AssemblyResult:
    r"""
    Generate a ramp entry path.
    
    Produces a ramp (linear or zigzag) from *start* to *end* while
    descending from *z_start* to *z_end*.
    
    :param start: ``(x, y)`` start point.
    :param end: ``(x, y)`` end point.
    :param z_start: Starting Z height.
    :param z_end: Ending (target) Z depth.
    :param max_ramp_angle_deg: Maximum ramp angle in degrees (default 45).
    :param style: ``"linear"`` or ``"zigzag"`` (default ``"zigzag"``).
    :param lateral_amplitude: Lateral oscillation amplitude for zigzag (default 2.0).
    :param state: Optional machine state to apply before the path.
    :returns: An :class:`AssemblyResult` with the ramp path.
    """

