lib/vnext_genai/graph/mermaid_protocol.ex

defprotocol GenAI.Graph.MermaidProtocol do
  @moduledoc """
  Mermaid Encode Protocol.
  """

  @doc """
  Format an ID for use in a Mermaid diagram.
  """
  @spec mermaid_id(term) :: term
  def mermaid_id(id)

  @doc """
  Convert element to mermaid output.
  """
  @spec encode(term) :: {:ok, term} | {:error, term}
  def encode(graph_element)

  @doc """
  Convert element to mermaid output.
  """
  @spec encode(term, term) :: {:ok, term} | {:error, term}
  def encode(graph_element, options)

  @doc """
  Convert element to mermaid output.
  """
  @spec encode(term, term, term) :: {:ok, term} | {:error, term}
  def encode(graph_element, options, state)
end