lib/eventize/serialization/serializer.ex

defmodule Eventize.Serialization.Serializer do
  @moduledoc """
  Behaviour that specifies how events and snapshots can be serialized and deserialized.
  """

  @callback serialize(input :: map()) :: {:ok, binary()} | {:error, term()}

  @callback deserialize(input :: binary(), type :: atom | nil) ::
              {:ok, term()} | {:error, term()}
end