lib/qr_nbu_ex.ex

defmodule QRNBUEx do
  @moduledoc """
  Documentation for `QRNBUEx`.

  ```elixir
  amount = Decimal.new("10.20")

  data = %QRNBU{
    recipient: "Негрієнко Данило Олександрович",
    tax_id: "1246993119",
    iban: "UA303348510000026206114040874",
    amount: amount,
    purpose: "Призначення платежу"
  }

  # Generate data string for QR encoding
  {:ok, qr_data} = QRNBUEx.generate(data)

  # Use any QR code library to render the image
  # For example with qr_code library:
  # qr_data |> QRCode.create() |> QRCode.render() |> QRCode.save("qr.svg")
  ```
  """

  @doc """
  Generate NBU QR code data string from %QRNBU{} struct.

  Returns the formatted data string ready to be encoded into a QR code image
  using any QR code rendering library.

  ## Options
  - `:encoding` - `:utf8` (default) or `:cp1251`

  ## Examples
      iex> data = %QRNBU{recipient: "Test", iban: "UA...", ...}
      iex> {:ok, qr_string} = QRNBUEx.generate(data)
      iex> # Now use qr_string with any QR rendering library
  """
  @spec generate(map(), keyword()) :: {:ok, binary()} | {:error, binary()}
  def generate(data, _options \\ []) do
    # Default to V001 for legacy compatibility
    # Note: QRNBU.to_uri/2 was removed/renamed. Using QRNBU.generate/2 instead.
    QRNBU.generate(:v001, data)
  end
end