lib/types/network_id.ex

defmodule Kadena.Types.NetworkID do
  @moduledoc """
  `NetworkID` struct definition.
  """

  @behaviour Kadena.Types.Spec

  @type id :: String.t()
  @type t :: %__MODULE__{id: id()}

  defstruct [:id]

  @impl true
  def new(id \\ nil)
  def new(nil), do: %__MODULE__{}
  def new(:mainnet01), do: %__MODULE__{id: "mainnet01"}
  def new(:testnet04), do: %__MODULE__{id: "testnet04"}
  def new(:development), do: %__MODULE__{id: "development"}
  def new(_id), do: {:error, [id: :invalid]}
end