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

import builtins
from raygeo.ops import assembly
from raygeo.ops import part
import typing
__all__ = [
    "Workplan",
]

@typing.final
class Workplan:
    r"""
    Plan-time context and executor for a sequence of WorkplanSteps.
    
    Captures the pocket boundary, islands, and safe-Z at construction
    time.  After extending with steps from a builder (e.g.
        :func:`raygeo.cnc.machining.entry.build_entry_workplan`
    or :func:`raygeo.cnc.machining.entry.build_entry_workplan`),
    call :meth:`execute` to produce a combined :class:`AssemblyResult`.
    """
    def __new__(cls, pocket_boundary: typing.Sequence[tuple[builtins.float, builtins.float]], islands: typing.Optional[typing.Sequence[typing.Sequence[tuple[builtins.float, builtins.float]]]] = None, safe_z: builtins.float = 2.0) -> Workplan: ...
    @staticmethod
    def from_part(part: part.Part, safe_z: builtins.float = 2.0) -> Workplan:
        r"""
        Create a Workplan from a :class:`raygeo.ops.part.Part`, extracting boundary
        and islands from ``part.geometry``.
        
        Raises ``ValueError`` if the part has no extractable boundary geometry.
        """
    def extend(self, steps: typing.Any) -> None:
        r"""
        Append builder output steps (list of WorkplanStep dicts).
        """
    def execute(self, cut_feed_rate: builtins.int = 1200, cut_power: builtins.float = 1.0, rapid_feed_rate: typing.Optional[builtins.int] = None, trace: typing.Optional[builtins.str] = None, on_progress: typing.Optional[typing.Any] = None, batch_size: builtins.int = 128) -> assembly.AssemblyResult:
        r"""
        Execute all steps and return the combined :class:`AssemblyResult`.
        
        :param cut_feed_rate: Feed rate for cutting moves (default 1200).
        :param cut_power: Laser power for cutting moves (default 1.0).
        :param rapid_feed_rate: Feed rate for travel/retract moves, or
            ``None`` to leave them unmodified (default None).
        :param trace: Optional file path for a trace file (``.bin``).
        :param on_progress: Optional callback receiving progress dicts.
        :param batch_size: Ops batch size for on_progress (default 128).
        :returns: The combined :class:`AssemblyResult`.
        """
    def __repr__(self) -> builtins.str: ...

