Current section
8 Versions
Jump to
Current section
8 Versions
Compare versions
20
files changed
+478
additions
-97
deletions
| @@ -1,7 +1,7 @@ | |
| 1 1 | {<<"links">>, |
| 2 2 | [{<<"GitHub">>,<<"https://github.com/RujiraNetwork/rujira_ex">>}]}. |
| 3 3 | {<<"name">>,<<"rujira_ex">>}. |
| 4 | - {<<"version">>,<<"0.0.5">>}. |
| 4 | + {<<"version">>,<<"0.0.6">>}. |
| 5 5 | {<<"description">>,<<"Domain library for Rujira">>}. |
| 6 6 | {<<"elixir">>,<<"~> 1.18">>}. |
| 7 7 | {<<"files">>, |
| @@ -365,13 +365,19 @@ | |
| 365 365 | <<"lib/rujira/fin">>,<<"lib/rujira/fin/events.ex">>, |
| 366 366 | <<"lib/rujira/fin/order.ex">>,<<"lib/rujira/fin/range.ex">>, |
| 367 367 | <<"lib/rujira/fin/pair.ex">>,<<"lib/rujira/fin/events">>, |
| 368 | + <<"lib/rujira/fin/events/order_increase.ex">>, |
| 368 369 | <<"lib/rujira/fin/events/range_deposit.ex">>, |
| 369 | - <<"lib/rujira/fin/events/retract.ex">>, |
| 370 370 | <<"lib/rujira/fin/events/range_create.ex">>, |
| 371 | + <<"lib/rujira/fin/events/range_transfer.ex">>, |
| 372 | + <<"lib/rujira/fin/events/order_retract.ex">>, |
| 371 373 | <<"lib/rujira/fin/events/range_close.ex">>, |
| 372 | - <<"lib/rujira/fin/events/event.ex">>,<<"lib/rujira/fin/events/submit.ex">>, |
| 374 | + <<"lib/rujira/fin/events/event.ex">>, |
| 375 | + <<"lib/rujira/fin/events/order_withdraw.ex">>, |
| 373 376 | <<"lib/rujira/fin/events/trade.ex">>, |
| 377 | + <<"lib/rujira/fin/events/order_create.ex">>, |
| 374 378 | <<"lib/rujira/fin/events/range_withdraw.ex">>, |
| 379 | + <<"lib/rujira/fin/events/trade_range.ex">>, |
| 380 | + <<"lib/rujira/fin/events/arb.ex">>,<<"lib/rujira/fin/events/price.ex">>, |
| 375 381 | <<"lib/rujira/fin/events/range_fee.ex">>, |
| 376 382 | <<"lib/rujira/fin/events/range_claim.ex">>,<<"lib/rujira/fin/book.ex">>, |
| 377 383 | <<"lib/rujira/logger.ex">>,<<"lib/rujira/thorchain">>, |
| @@ -7,15 +7,19 @@ defmodule Rujira.Fin.Events do | |
| 7 7 | """ |
| 8 8 | |
| 9 9 | alias Rujira.Events.Event |
| 10 | + alias Rujira.Fin.Events.Arb |
| 10 11 | alias Rujira.Fin.Events.Event, as: FinEvent |
| 12 | + alias Rujira.Fin.Events.OrderCreate |
| 13 | + alias Rujira.Fin.Events.OrderIncrease |
| 14 | + alias Rujira.Fin.Events.OrderRetract |
| 15 | + alias Rujira.Fin.Events.OrderWithdraw |
| 11 16 | alias Rujira.Fin.Events.RangeClaim |
| 12 17 | alias Rujira.Fin.Events.RangeClose |
| 13 18 | alias Rujira.Fin.Events.RangeCreate |
| 14 19 | alias Rujira.Fin.Events.RangeDeposit |
| 15 20 | alias Rujira.Fin.Events.RangeFee |
| 21 | + alias Rujira.Fin.Events.RangeTransfer |
| 16 22 | alias Rujira.Fin.Events.RangeWithdraw |
| 17 | - alias Rujira.Fin.Events.Retract |
| 18 | - alias Rujira.Fin.Events.Submit |
| 19 23 | alias Rujira.Fin.Events.Trade |
| 20 24 | |
| 21 25 | @spec parse(Event.t()) :: {:ok, FinEvent.t()} | {:error, term()} |
| @@ -36,13 +40,17 @@ defmodule Rujira.Fin.Events do | |
| 36 40 | def parse(%Event{} = event), do: {:ok, FinEvent.new(nil, event)} |
| 37 41 | |
| 38 42 | defp new("trade", attrs), do: Trade.new(attrs) |
| 39 | - defp new("submit", attrs), do: Submit.new(attrs) |
| 40 | - defp new("retract", attrs), do: Retract.new(attrs) |
| 43 | + defp new("arb", attrs), do: Arb.new(attrs) |
| 44 | + defp new("order.create", attrs), do: OrderCreate.new(attrs) |
| 45 | + defp new("order.withdraw", attrs), do: OrderWithdraw.new(attrs) |
| 46 | + defp new("order.increase", attrs), do: OrderIncrease.new(attrs) |
| 47 | + defp new("order.retract", attrs), do: OrderRetract.new(attrs) |
| 41 48 | defp new("range.create", attrs), do: RangeCreate.new(attrs) |
| 42 49 | defp new("range.deposit", attrs), do: RangeDeposit.new(attrs) |
| 43 50 | defp new("range.withdraw", attrs), do: RangeWithdraw.new(attrs) |
| 44 51 | defp new("range.close", attrs), do: RangeClose.new(attrs) |
| 45 52 | defp new("range.claim", attrs), do: RangeClaim.new(attrs) |
| 53 | + defp new("range.transfer", attrs), do: RangeTransfer.new(attrs) |
| 46 54 | defp new("range.fee", attrs), do: RangeFee.new(attrs) |
| 47 55 | defp new(_, _), do: :pass |
| 48 56 | end |
| @@ -0,0 +1,22 @@ | |
| 1 | + defmodule Rujira.Fin.Events.Arb do |
| 2 | + @moduledoc "An arbitrage capture event (`wasm-rujira-fin/arb`)." |
| 3 | + |
| 4 | + alias Rujira.Amount |
| 5 | + |
| 6 | + defstruct base: 0, quote: 0 |
| 7 | + |
| 8 | + @type t :: %__MODULE__{ |
| 9 | + base: Amount.t(), |
| 10 | + quote: Amount.t() |
| 11 | + } |
| 12 | + |
| 13 | + @spec new(map()) :: {:ok, t()} | {:error, term()} |
| 14 | + def new(%{"base" => base, "quote" => quote}) do |
| 15 | + with {:ok, base} <- Amount.new(base), |
| 16 | + {:ok, quote} <- Amount.new(quote) do |
| 17 | + {:ok, %__MODULE__{base: base, quote: quote}} |
| 18 | + end |
| 19 | + end |
| 20 | + |
| 21 | + def new(_), do: {:error, :invalid_attrs} |
| 22 | + end |
| @@ -0,0 +1,31 @@ | |
| 1 | + defmodule Rujira.Fin.Events.OrderCreate do |
| 2 | + @moduledoc "An order creation event (`wasm-rujira-fin/order.create`)." |
| 3 | + |
| 4 | + alias Rujira.Amount |
| 5 | + alias Rujira.Fin.Events.Price |
| 6 | + |
| 7 | + defstruct owner: nil, side: :base, price: nil, offer: 0 |
| 8 | + |
| 9 | + @type t :: %__MODULE__{ |
| 10 | + owner: String.t(), |
| 11 | + side: :base | :quote, |
| 12 | + price: Price.t(), |
| 13 | + offer: Amount.t() |
| 14 | + } |
| 15 | + |
| 16 | + @spec new(map()) :: {:ok, t()} | {:error, term()} |
| 17 | + def new(%{"owner" => owner, "side" => side, "price" => price, "offer" => offer}) do |
| 18 | + with {:ok, price} <- Price.parse(price), |
| 19 | + {:ok, offer} <- Amount.new(offer) do |
| 20 | + {:ok, |
| 21 | + %__MODULE__{ |
| 22 | + owner: owner, |
| 23 | + side: side |> String.downcase() |> String.to_existing_atom(), |
| 24 | + price: price, |
| 25 | + offer: offer |
| 26 | + }} |
| 27 | + end |
| 28 | + end |
| 29 | + |
| 30 | + def new(_), do: {:error, :invalid_attrs} |
| 31 | + end |
| @@ -0,0 +1,31 @@ | |
| 1 | + defmodule Rujira.Fin.Events.OrderIncrease do |
| 2 | + @moduledoc "An order increase event (`wasm-rujira-fin/order.increase`)." |
| 3 | + |
| 4 | + alias Rujira.Amount |
| 5 | + alias Rujira.Fin.Events.Price |
| 6 | + |
| 7 | + defstruct owner: nil, side: :base, price: nil, amount: 0 |
| 8 | + |
| 9 | + @type t :: %__MODULE__{ |
| 10 | + owner: String.t(), |
| 11 | + side: :base | :quote, |
| 12 | + price: Price.t(), |
| 13 | + amount: Amount.t() |
| 14 | + } |
| 15 | + |
| 16 | + @spec new(map()) :: {:ok, t()} | {:error, term()} |
| 17 | + def new(%{"owner" => owner, "side" => side, "price" => price, "amount" => amount}) do |
| 18 | + with {:ok, price} <- Price.parse(price), |
| 19 | + {:ok, amount} <- Amount.new(amount) do |
| 20 | + {:ok, |
| 21 | + %__MODULE__{ |
| 22 | + owner: owner, |
| 23 | + side: side |> String.downcase() |> String.to_existing_atom(), |
| 24 | + price: price, |
| 25 | + amount: amount |
| 26 | + }} |
| 27 | + end |
| 28 | + end |
| 29 | + |
| 30 | + def new(_), do: {:error, :invalid_attrs} |
| 31 | + end |
Loading more files…