from typing import Any, Dict

class Neuron:
    """
    Classe-base de um “neurónio-agente”.
    Cada neurónio pode observar/agir e trocar mensagens via o bus do Cortex.
    """
    name = "Neuron"

    def __init__(self, ctx: "Cortex"):
        self.ctx = ctx

    def observe(self) -> None:
        """Ler estado do mundo (sensores, /proc, eventos)."""
        return

    def think(self) -> None:
        """Processar/planejar usando o estado atual."""
        return

    def act(self) -> None:
        """Executar uma ação (opcional)."""
        return

    # Utilitários
    def publish(self, channel: str, payload: Dict[str, Any]) -> None:
        self.ctx.bus_publish(channel, payload)

    def consume(self, channel: str) -> Dict[str, Any] | None:
        return self.ctx.bus_consume(channel)
