lib/rpc/endpoints/get_events.ex

defmodule Soroban.RPC.GetEvents do
  @moduledoc """
  GetEvents request implementation for Soroban RPC.
  """
  @behaviour Soroban.RPC.Endpoint.Spec

  alias Soroban.RPC.EventsPayload
  alias Soroban.RPC.{GetEventsResponse, Request}

  @endpoint "getEvents"

  @impl true
  def request(%EventsPayload{} = payload) do
    payload = EventsPayload.to_request_args(payload)

    @endpoint
    |> Request.new()
    |> Request.add_headers([{"Content-Type", "application/json"}])
    |> Request.add_params(payload)
    |> Request.perform()
    |> Request.results(as: GetEventsResponse)
  end
end