"""
Figment trigger protocol and command types.

Defines the extensible input abstraction for triggering figment displays
from any control surface (ntfy, MQTT, serial, etc.).
"""

from __future__ import annotations

from dataclasses import dataclass
from enum import Enum
from typing import Protocol


class FigmentAction(Enum):
    TRIGGER = "trigger"
    SET_INTENSITY = "set_intensity"
    SET_INTERVAL = "set_interval"
    SET_COLOR = "set_color"
    STOP = "stop"


@dataclass
class FigmentCommand:
    action: FigmentAction
    value: float | str | None = None


class FigmentTrigger(Protocol):
    """Protocol for figment trigger sources.

    Any input source (ntfy, MQTT, serial) can implement this
    to trigger and control figment displays.
    """

    def poll(self) -> FigmentCommand | None: ...
