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

import builtins
import collections.abc
import raygeo
import typing
__all__ = [
    "SlotSpec",
    "generate_slot",
]

@typing.final
class SlotSpec:
    r"""
    Parameters for the ``slot`` assembler.
    """
    @property
    def carrier(self) -> builtins.list[tuple[builtins.float, builtins.float]]:
        r"""
        ``(x, y)`` carrier waypoints.
        """
    @property
    def tool_radius(self) -> builtins.float: ...
    @property
    def target_z(self) -> builtins.float: ...
    def __eq__(self, other: builtins.object, /) -> builtins.bool: ...
    def __new__(cls, carrier: typing.Sequence[tuple[builtins.float, builtins.float]], tool_radius: builtins.float, target_z: builtins.float) -> SlotSpec: ...

def generate_slot(part: raygeo.ops.part.Part, carrier: collections.abc.Sequence[tuple[float, float]], tool_radius: float, target_z: float, state: raygeo.ops.state.State | None = None) -> raygeo.ops.assembly.AssemblyResult:
    r"""
    Generate a back-and-forth slot clearing path along a carrier.
    
    Produces a forward pass then a backward pass along the carrier,
    both at constant *target_z*. The cleared polygon is the carrier
    swept by *tool_radius* (Minkowski sum).
    
    :param carrier: ``(x, y)`` waypoints (currently 2-point segment).
    :param tool_radius: Tool radius in mm.
    :param target_z: Cutting Z height.
    :param state: Optional machine state to apply before the path.
    :returns: An :class:`AssemblyResult` with the slot path.
    """

