lib/xtb_client/messages/transaction_status.ex

defmodule XtbClient.Messages.TransactionStatus do
  @moduledoc """
  Atoms representing transaction statuses.
  """

  @type t :: :error | :pending | :accepted | :rejected
  @type status_code :: 0 | 1 | 3 | 4

  @doc """
  Parse integer value as valid atom for transaction status.
  """
  @spec parse(status_code()) :: t()
  def parse(value) when value in [0, 1, 3, 4] do
    parse_status(value)
  end

  defp parse_status(value) do
    case value do
      0 -> :error
      1 -> :pending
      3 -> :accepted
      4 -> :rejected
    end
  end
end