@@ -5,23 +5,81 @@ use crate::{
5
5
BatchSwapOutputData , CandlestickData , DirectedTradingPair , SwapExecution , TradingPair ,
6
6
} ;
7
7
use anyhow:: { anyhow, Context } ;
8
- use penumbra_sct:: Nullifier ;
9
- use penumbra_tct:: StateCommitment ;
10
- use prost:: Name ;
11
-
12
8
use penumbra_asset:: asset;
13
9
use penumbra_num:: Amount ;
14
10
use penumbra_proto:: { penumbra:: core:: component:: dex:: v1 as pb, DomainType } ;
11
+ use penumbra_sct:: Nullifier ;
12
+ use penumbra_tct:: StateCommitment ;
13
+ use prost:: Name as _;
15
14
16
- pub fn swap ( swap : & Swap ) -> pb:: EventSwap {
17
- pb:: EventSwap {
18
- trading_pair : Some ( swap. body . trading_pair . into ( ) ) ,
19
- delta_1_i : Some ( swap. body . delta_1_i . into ( ) ) ,
20
- delta_2_i : Some ( swap. body . delta_2_i . into ( ) ) ,
21
- swap_commitment : Some ( swap. body . payload . commitment . into ( ) ) ,
15
+ #[ derive( Clone , Debug ) ]
16
+ pub struct EventSwap {
17
+ pub trading_pair : TradingPair ,
18
+ pub delta_1_i : Amount ,
19
+ pub delta_2_i : Amount ,
20
+ pub swap_commitment : StateCommitment ,
21
+ }
22
+
23
+ impl From < Swap > for EventSwap {
24
+ fn from ( value : Swap ) -> Self {
25
+ Self :: from ( & value)
22
26
}
23
27
}
24
28
29
+ impl From < & Swap > for EventSwap {
30
+ fn from ( value : & Swap ) -> Self {
31
+ Self {
32
+ trading_pair : value. body . trading_pair ,
33
+ delta_1_i : value. body . delta_1_i ,
34
+ delta_2_i : value. body . delta_2_i ,
35
+ swap_commitment : value. body . payload . commitment ,
36
+ }
37
+ }
38
+ }
39
+
40
+ impl TryFrom < pb:: EventSwap > for EventSwap {
41
+ type Error = anyhow:: Error ;
42
+
43
+ fn try_from ( value : pb:: EventSwap ) -> Result < Self , Self :: Error > {
44
+ fn inner ( value : pb:: EventSwap ) -> anyhow:: Result < EventSwap > {
45
+ Ok ( EventSwap {
46
+ trading_pair : value
47
+ . trading_pair
48
+ . ok_or ( anyhow ! ( "missing `trading_pair`" ) ) ?
49
+ . try_into ( ) ?,
50
+ delta_1_i : value
51
+ . delta_1_i
52
+ . ok_or ( anyhow ! ( "missing `delta_1_i`" ) ) ?
53
+ . try_into ( ) ?,
54
+ delta_2_i : value
55
+ . delta_2_i
56
+ . ok_or ( anyhow ! ( "missing `delta_2_i`" ) ) ?
57
+ . try_into ( ) ?,
58
+ swap_commitment : value
59
+ . swap_commitment
60
+ . ok_or ( anyhow ! ( "missing `swap_commitment`" ) ) ?
61
+ . try_into ( ) ?,
62
+ } )
63
+ }
64
+ inner ( value) . context ( format ! ( "parsing {}" , pb:: EventSwap :: NAME ) )
65
+ }
66
+ }
67
+
68
+ impl From < EventSwap > for pb:: EventSwap {
69
+ fn from ( value : EventSwap ) -> Self {
70
+ Self {
71
+ trading_pair : Some ( value. trading_pair . into ( ) ) ,
72
+ delta_1_i : Some ( value. delta_1_i . into ( ) ) ,
73
+ delta_2_i : Some ( value. delta_2_i . into ( ) ) ,
74
+ swap_commitment : Some ( value. swap_commitment . into ( ) ) ,
75
+ }
76
+ }
77
+ }
78
+
79
+ impl DomainType for EventSwap {
80
+ type Proto = pb:: EventSwap ;
81
+ }
82
+
25
83
#[ derive( Clone , Debug ) ]
26
84
pub struct EventSwapClaim {
27
85
pub trading_pair : TradingPair ,
0 commit comments