import abc

from .operator import ClauseStream


class Message(abc.ABC):
    pass


class Context(abc.ABC):
    pass


class Task(Message, abc.ABC):
    pass


class Command(Task, abc.ABC):
    pass


class Query(Task, abc.ABC):
    @abc.abstractmethod
    def __iter__(self) -> ClauseStream: ...


class Event(Message, abc.ABC):
    pass


class Error(Event, abc.ABC):
    pass
