lib/strkey/strkey_error.ex

defmodule StellarBase.StrKeyError do
  @moduledoc """
  Handle exceptions that may arise from the `StellarBase.StrKey` implementation.
  """
  @type t :: %__MODULE__{message: String.t()}

  defexception [:message]

  @spec exception(type :: atom()) :: no_return()
  def exception(:invalid_binary), do: %__MODULE__{message: "cannot encode nil data"}
  def exception(:cant_decode_nil_data), do: %__MODULE__{message: "cannot decode nil data"}
  def exception(:invalid_data_to_decode), do: %__MODULE__{message: "cannot decode data"}
  def exception(:invalid_checksum), do: %__MODULE__{message: "invalid checksum"}

  def exception(:unmatched_version_bytes),
    do: %__MODULE__{message: "version bytes does not match"}

  def exception(message), do: %__MODULE__{message: message}
end