lib/craftgate.ex

defmodule Craftgate do
  @version Mix.Project.config()[:version]

  @moduledoc """
  Elixir client for Craftgate, the one-stop shop payment gateway
  """

  @doc """
  Returns the current project version
  """
  @spec version() :: binary()
  def version(), do: @version

  @doc """
  Returns the current client version
  """
  @spec client_version() :: binary()
  def client_version(), do: "craftgate-elixir-client:" <> version()


  @doc """
  Convenience method to access `Craftgate.Adapter.FileReportingAdapter`
  """
  @spec file_reporting() :: Craftgate.Adapter.FileReportingAdapter
  def file_reporting(), do: Craftgate.Adapter.FileReportingAdapter


  @doc """
  Convenience method to access `Craftgate.Adapter.FraudAdapter`
  """
  @spec fraud() :: Craftgate.Adapter.FraudAdapter
  def fraud(), do: Craftgate.Adapter.FraudAdapter

  @doc """
  Convenience method to access `Craftgate.Adapter.HookAdapter`
  """
  @spec hook() :: Craftgate.Adapter.HookAdapter
  def hook(), do: Craftgate.Adapter.HookAdapter

  @doc """
  Convenience method to access `Craftgate.Adapter.InstallmentAdapter`
  """
  @spec installment() :: Craftgate.Adapter.InstallmentAdapter
  def installment(), do: Craftgate.Adapter.InstallmentAdapter

  @doc """
  Convenience method to access `Craftgate.Adapter.OnboardingAdapter`
  """
  @spec onboarding() :: Craftgate.Adapter.OnboardingAdapter
  def onboarding(), do: Craftgate.Adapter.OnboardingAdapter

  @doc """
  Convenience method to access `Craftgate.Adapter.PayByLinkAdapter`
  """
  @spec pay_by_link() :: Craftgate.Adapter.PayByLinkAdapter
  def pay_by_link(), do: Craftgate.Adapter.PayByLinkAdapter

  @doc """
  Convenience method to access `Craftgate.Adapter.PaymentAdapter`
  """
  @spec payment() :: Craftgate.Adapter.PaymentAdapter
  def payment(), do: Craftgate.Adapter.PaymentAdapter

  @doc """
  Convenience method to access `Craftgate.Adapter.PaymentReportingAdapter`
  """
  @spec payment_reporting() :: Craftgate.Adapter.PaymentReportingAdapter
  def payment_reporting(), do: Craftgate.Adapter.PaymentReportingAdapter

  @doc """
  Convenience method to access `Craftgate.Adapter.SettlementReportingAdapter`
  """
  @spec settlement_reporting() :: Craftgate.Adapter.SettlementReportingAdapter
  def settlement_reporting(), do: Craftgate.Adapter.SettlementReportingAdapter

  @doc """
  Convenience method to access `Craftgate.Adapter.SettlementAdapter`
  """
  @spec settlement() :: Craftgate.Adapter.SettlementAdapter
  def settlement(), do: Craftgate.Adapter.SettlementAdapter

  @doc """
  Convenience method to access `Craftgate.Adapter.WalletAdapter`
  """
  @spec wallet() :: Craftgate.Adapter.WalletAdapter
  def wallet(), do: Craftgate.Adapter.WalletAdapter
end