"""Robot adapter base types."""

from __future__ import annotations

from abc import ABC, abstractmethod
from typing import Any, Dict, List

from .state import RobotStep


class RobotAdapter(ABC):
    """Abstract adapter for translating generic commands to robot-specific commands.

    Generic commands:
    - grab: Activate tool to grab object
    - release: Deactivate tool to release object
    - move: Move to position
    - reset_tool: Reset tool to safe state
    """

    @abstractmethod
    def grab(self) -> List[RobotStep]:
        """Translate grab command to robot steps."""
        pass

    @abstractmethod
    def release(self) -> List[RobotStep]:
        """Translate release command to robot steps."""
        pass

    @abstractmethod
    def move(self, payload: Dict[str, Any]) -> List[RobotStep]:
        """Translate move command to robot steps."""
        pass

    @abstractmethod
    def reset_tool(self) -> List[RobotStep]:
        """Translate reset_tool command to robot steps."""
        pass
