Current section

8 Versions

Jump to

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…