defmodule XRPL.Ledger do
@moduledoc """
XRPL.Ledger is a module to interact with ledgers on the XRP Ledger.
A ledger version contains a header, a transaction tree, and a state tree, which contain account settings, trustlines, balances, transactions, and other data.
Use these methods to retrieve ledger info.
Official RPC documentation: https://xrpl.org/ledger-methods.html
"""
use XRPL
@doc """
Retrieve information about the public ledger.
Official documentation: https://xrpl.org/ledger.html
"""
def ledger(params) do
xrpl("ledger", params)
end
def ledger!(params), do: params |> ledger() |> unwrap_or_raise()
defparams "ledger" do
optional(:ledger_hash, :string, format: :ledger_entry)
optional(:ledger_index, :string, format: :ledger_index)
optional(:transactions, :boolean, default: false)
optional(:expand, :boolean, default: false)
optional(:owner_funds, :boolean, default: false)
optional(:binary, :boolean)
optional(:queue, :boolean)
end
@doc """
The ledger_closed method returns the unique identifiers of the most recently closed ledger.
(This ledger is not necessarily validated and immutable yet.)
Official documentation: https://xrpl.org/ledger_closed.html
"""
def ledger_closed do
xrpl("ledger_closed", %{})
end
def ledger_closed!, do: unwrap_or_raise(ledger_closed())
defparams "ledger_closed" do
end
@doc """
The ledger_current method returns the unique identifiers of the current in-progress ledger.
This command is mostly useful for testing, because the ledger returned is still in flux.
Official documentation: https://xrpl.org/ledger_current.html
"""
def ledger_current do
xrpl("ledger_current", %{})
end
def ledger_current!, do: unwrap_or_raise(ledger_current())
defparams "ledger_current" do
end
@doc """
The ledger_data method retrieves contents of the specified ledger.
You can iterate through several calls to retrieve the entire contents of a single ledger version.
Official documentation: https://xrpl.org/ledger_data.html
"""
def ledger_data(params) do
xrpl("ledger_data", params)
end
def ledger_data!(params), do: params |> ledger_data() |> unwrap_or_raise()
defparams "ledger_data" do
optional(:ledger_hash, :string, format: :ledger_entry)
optional(:ledger_index, :string, format: :ledger_index)
optional(:binary, :boolean, default: false)
optional(:limit, :integer, max: 256, default: 256)
optional(:marker, :string)
optional(:type, :enum,
values: [
"account",
"amendments",
"amm",
"check",
"deposit_preauth",
"directory",
"escrow",
"fee",
"hashes",
"nft_offer",
"offer",
"payment_channel",
"signer_list",
"state",
"ticket"
]
)
end
end