"""Protocols for switch backend implementations."""

from __future__ import annotations

from typing import Protocol


class SwitchDriverProtocol(Protocol):
    """Required contract for all switch backends."""

    def open(self) -> None:
        """Open hardware or mock resources."""

    def close(self) -> None:
        """Close hardware or mock resources."""

    def position_count(self) -> int:
        """Return total number of supported positions."""

    def switch_to(self, position: int) -> None:
        """Switch to requested zero-based position."""

    @property
    def current_position(self) -> int:
        """Return currently active position."""
