"""
Scaffold drivers for devices whose closed SDK we haven't wired yet.

Each is a real Source with the correct catalog StreamSpec, so it already shows up
in pickers, the catalog, and HARDWARE.md — but `read()` raises a clear message
telling you what to install/implement. IMPORTANT: most of these also have an LSL
relay path (Varjo/Vive via OpenXR, etc.); if so, the fastest route to live data is
to add an `lsl`-tier catalog entry instead of finishing the SDK driver.

Fill one in by implementing `read()` against the vendor SDK, exactly like
`tobii.py` / `gazepoint.py`. Nothing else in biosync changes.
"""

from __future__ import annotations

from ._base import DriverSource


class _Scaffold(DriverSource):
    """read() inherited from DriverSource raises a helpful NotImplementedError."""


class EyeTechSource(_Scaffold):
    """EyeTech VT3 Mini — implement against the EyeTech TM SDK."""


class ViewpointSource(_Scaffold):
    """Viewpointsystem VPS — implement against the Viewpointsystem SDK."""


class ArgusSource(_Scaffold):
    """Argus Science ETVision — ETVision SDK (or add an LSL catalog entry)."""


class VarjoSource(_Scaffold):
    """Varjo XR-4 — Varjo SDK / OpenXR eye gaze; LSL relay is usually fastest."""


class ViveProEyeSource(_Scaffold):
    """HTC Vive Pro Eye — SRanipal / OpenXR; LSL relay is usually fastest."""


class NeurableSource(_Scaffold):
    """Neurable MW75 — Neurable SDK; verify whether an LSL outlet is available."""


class MetaQuestSource(_Scaffold):
    """Meta Quest Pro — eye gaze via OpenXR (EXT_eye_gaze_interaction) -> LSL relay."""


class ViveFocusSource(_Scaffold):
    """HTC Vive Focus 3 / Vision — standalone VR eye tracking via OpenXR / WaveSDK."""
