diff --git a/crates/cnidarium/src/gen/proto_descriptor.bin.no_lfs b/crates/cnidarium/src/gen/proto_descriptor.bin.no_lfs index cb5f8b9377..f41da7426e 100644 Binary files a/crates/cnidarium/src/gen/proto_descriptor.bin.no_lfs and b/crates/cnidarium/src/gen/proto_descriptor.bin.no_lfs differ diff --git a/crates/core/component/dex/src/event.rs b/crates/core/component/dex/src/event.rs index 64df9a8c62..acc1e47098 100644 --- a/crates/core/component/dex/src/event.rs +++ b/crates/core/component/dex/src/event.rs @@ -37,6 +37,7 @@ pub fn position_open(position: &Position) -> pb::EventPositionOpen { reserves_1: Some(position.reserves.r1.into()), reserves_2: Some(position.reserves.r2.into()), trading_fee: position.phi.component.fee, + position: Some(position.clone().into()), } } diff --git a/crates/proto/src/gen/penumbra.core.component.dex.v1.rs b/crates/proto/src/gen/penumbra.core.component.dex.v1.rs index 6a40e9c8a4..47bd11a9a1 100644 --- a/crates/proto/src/gen/penumbra.core.component.dex.v1.rs +++ b/crates/proto/src/gen/penumbra.core.component.dex.v1.rs @@ -1377,6 +1377,11 @@ pub struct EventPositionOpen { /// e.g. 2% fee is expressed as 200, 100% fee is expressed as 10000; #[prost(uint32, tag = "5")] pub trading_fee: u32, + /// The full position. + /// + /// This is somewhat redundant, but contains any information not present above. + #[prost(message, optional, tag = "6")] + pub position: ::core::option::Option, } impl ::prost::Name for EventPositionOpen { const NAME: &'static str = "EventPositionOpen"; diff --git a/crates/proto/src/gen/penumbra.core.component.dex.v1.serde.rs b/crates/proto/src/gen/penumbra.core.component.dex.v1.serde.rs index ba23216634..ef2766ee27 100644 --- a/crates/proto/src/gen/penumbra.core.component.dex.v1.serde.rs +++ b/crates/proto/src/gen/penumbra.core.component.dex.v1.serde.rs @@ -2547,6 +2547,9 @@ impl serde::Serialize for EventPositionOpen { if self.trading_fee != 0 { len += 1; } + if self.position.is_some() { + len += 1; + } let mut struct_ser = serializer.serialize_struct("penumbra.core.component.dex.v1.EventPositionOpen", len)?; if let Some(v) = self.position_id.as_ref() { struct_ser.serialize_field("positionId", v)?; @@ -2563,6 +2566,9 @@ impl serde::Serialize for EventPositionOpen { if self.trading_fee != 0 { struct_ser.serialize_field("tradingFee", &self.trading_fee)?; } + if let Some(v) = self.position.as_ref() { + struct_ser.serialize_field("position", v)?; + } struct_ser.end() } } @@ -2583,6 +2589,7 @@ impl<'de> serde::Deserialize<'de> for EventPositionOpen { "reserves2", "trading_fee", "tradingFee", + "position", ]; #[allow(clippy::enum_variant_names)] @@ -2592,6 +2599,7 @@ impl<'de> serde::Deserialize<'de> for EventPositionOpen { Reserves1, Reserves2, TradingFee, + Position, __SkipField__, } impl<'de> serde::Deserialize<'de> for GeneratedField { @@ -2619,6 +2627,7 @@ impl<'de> serde::Deserialize<'de> for EventPositionOpen { "reserves1" | "reserves_1" => Ok(GeneratedField::Reserves1), "reserves2" | "reserves_2" => Ok(GeneratedField::Reserves2), "tradingFee" | "trading_fee" => Ok(GeneratedField::TradingFee), + "position" => Ok(GeneratedField::Position), _ => Ok(GeneratedField::__SkipField__), } } @@ -2643,6 +2652,7 @@ impl<'de> serde::Deserialize<'de> for EventPositionOpen { let mut reserves_1__ = None; let mut reserves_2__ = None; let mut trading_fee__ = None; + let mut position__ = None; while let Some(k) = map_.next_key()? { match k { GeneratedField::PositionId => { @@ -2677,6 +2687,12 @@ impl<'de> serde::Deserialize<'de> for EventPositionOpen { Some(map_.next_value::<::pbjson::private::NumberDeserialize<_>>()?.0) ; } + GeneratedField::Position => { + if position__.is_some() { + return Err(serde::de::Error::duplicate_field("position")); + } + position__ = map_.next_value()?; + } GeneratedField::__SkipField__ => { let _ = map_.next_value::()?; } @@ -2688,6 +2704,7 @@ impl<'de> serde::Deserialize<'de> for EventPositionOpen { reserves_1: reserves_1__, reserves_2: reserves_2__, trading_fee: trading_fee__.unwrap_or_default(), + position: position__, }) } } diff --git a/crates/proto/src/gen/proto_descriptor.bin.no_lfs b/crates/proto/src/gen/proto_descriptor.bin.no_lfs index c6bbc68a36..9184afa862 100644 Binary files a/crates/proto/src/gen/proto_descriptor.bin.no_lfs and b/crates/proto/src/gen/proto_descriptor.bin.no_lfs differ diff --git a/proto/penumbra/penumbra/core/component/dex/v1/dex.proto b/proto/penumbra/penumbra/core/component/dex/v1/dex.proto index d20e5b004b..0ec1b5a9b8 100644 --- a/proto/penumbra/penumbra/core/component/dex/v1/dex.proto +++ b/proto/penumbra/penumbra/core/component/dex/v1/dex.proto @@ -655,6 +655,10 @@ message EventPositionOpen { // The trading fee for the position, expressed in basis points. // e.g. 2% fee is expressed as 200, 100% fee is expressed as 10000; uint32 trading_fee = 5; + // The full position. + // + // This is somewhat redundant, but contains any information not present above. + Position position = 6; } message EventPositionClose {