diff --git a/monkey/common/event_serializers/i_event_serialize.py b/monkey/common/event_serializers/i_event_serialize.py index e69de29bb..f78d2eb43 100644 --- a/monkey/common/event_serializers/i_event_serialize.py +++ b/monkey/common/event_serializers/i_event_serialize.py @@ -0,0 +1,34 @@ +from abc import ABC, abstractmethod +from typing import Dict, List, Type, Union + +from common.events import AbstractEvent + +JSONSerializable = Union[ + Dict[str, "JSONSerializable"], List["JSONSerializable"], int, str, float, bool, Type[None] +] + + +class IEventSerializer(ABC): + """ + Manages serialization and deserialization of events + """ + + @abstractmethod + def serialize(self, event: AbstractEvent) -> JSONSerializable: + """ + Serializes an event + + :param event: Event to serialize + :return: Serialized event + """ + pass + + @abstractmethod + def deserialize(self, serialized_event: JSONSerializable) -> AbstractEvent: + """ + Deserializes an event + + :param serialized_event: Serialized vent to deserialize + :return: Deserialized event + """ + pass