defmodule XRPL.LedgerEntry do @moduledoc """ The ledger_entry method returns a single ledger entry from the XRP Ledger in its raw format. See [ledger format](https://xrpl.org/ledger-object-types.html) for information on the different types of entries you can retrieve. Official documentation: https://xrpl.org/ledger_entry.html """ import XRPL @doc """ Retrieve any type of ledger object by its unique ID. Official documentation: https://xrpl.org/ledger_entry.html#get-ledger-object-by-id """ # @spec by_id(integer | String.t(), String.t()) :: Tesla.Env.result() def by_id(ledger_index, index) when is_ledger_index(index) do post("/", %{ method: "ledger_entry", params: [%{ledger_index: ledger_index, index: index}] }) end def by_id!(ledger_index, index), do: unwrap_or_raise(by_id(ledger_index, index)) @spec account_root(integer | String.t(), Keyword.t()) :: Tesla.Env.result() def account_root(account_root, ledger_index) do post("/", %{ method: "ledger_entry", params: [ %{ account_root: account_root, ledger_index: ledger_index } ] }) end def ledger_entry(:amm, ledger_index, asset) when is_binary(asset) do post("/", %{ method: "ledger_entry", params: [ %{ amm: %{asset: asset}, ledger_index: ledger_index } ] }) end def ledger_entry(:amm, ledger_index, %{asset: asset, asset2: asset2}) do post("/", %{ method: "ledger_entry", amm: %{ asset: asset, asset2: asset2 }, ledger_index: ledger_index }) end def ledger_entry(:directory_node, ledger_index, directory) when is_binary(directory) do post("/", %{ method: "ledger_entry", params: [%{directory: directory, ledger_index: ledger_index}] }) end def ledger_entry(:directory_node, ledger_index, opts) do opts = Keyword.filter(opts, &Enum.any?([:subindex, :dir_root, :owner], &1)) post("/", %{ method: "ledger_entry", params: [%{ledger_index: ledger_index, directory: Map.new(opts)}] }) end def ledger_entry(:offer, ledger_index, offer) when is_binary(offer) do post("/", %{ method: "ledger_entry", params: [%{offer: offer, ledger_index: ledger_index}] }) end def ledger_entry(:offer, ledger_index, account, seq) do post("/", %{ method: "ledger_entry", params: [%{offer: %{account: account, seq: seq}, ledger_index: ledger_index}] }) end # def ledger_entry(:ripple_state, ledger_index, accounts, currency) do # end end