defmodule Mobilizon.Service.ActivityPub.Converter do
  @moduledoc """
  Converter behaviour

  This module allows to convert from ActivityStream format to our own internal one, and back
  """
  @callback as_to_model_data(map()) :: map()
  @callback model_to_as(struct()) :: map()
end

defprotocol Mobilizon.Service.ActivityPub.Convertible do
  @type activitystreams :: map()

  @spec model_to_as(t) :: activitystreams
  def model_to_as(convertible)
end