lib/rpc/endpoints/simulate_transaction.ex

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

  alias Soroban.RPC.{Request, SimulateTransactionResponse}

  @endpoint "simulateTransaction"

  @impl true
  def request(transaction) do
    @endpoint
    |> Request.new()
    |> Request.add_headers([{"Content-Type", "application/json"}])
    |> Request.add_params(%{transaction: transaction})
    |> Request.perform()
    |> Request.results(as: SimulateTransactionResponse)
  end
end