penumbra_sdk_distributions/
event.rs1use anyhow::{anyhow, Context as _};
2use penumbra_sdk_num::Amount;
3use penumbra_sdk_proto::{
4 penumbra::core::component::distributions::v1 as pb, DomainType, Name as _,
5};
6
7#[derive(Clone, Debug)]
8pub struct EventLqtPoolSizeIncrease {
9 pub epoch_index: u64,
10 pub increase: Amount,
11 pub new_total: Amount,
12}
13
14impl TryFrom<pb::EventLqtPoolSizeIncrease> for EventLqtPoolSizeIncrease {
15 type Error = anyhow::Error;
16
17 fn try_from(value: pb::EventLqtPoolSizeIncrease) -> Result<Self, Self::Error> {
18 fn inner(value: pb::EventLqtPoolSizeIncrease) -> anyhow::Result<EventLqtPoolSizeIncrease> {
19 Ok(EventLqtPoolSizeIncrease {
20 epoch_index: value.epoch,
21 increase: value
22 .increase
23 .ok_or(anyhow!("missing `increase`"))?
24 .try_into()?,
25 new_total: value
26 .new_total
27 .ok_or(anyhow!("missing `new_total`"))?
28 .try_into()?,
29 })
30 }
31 inner(value).context(format!("parsing {}", pb::EventLqtPoolSizeIncrease::NAME))
32 }
33}
34
35impl From<EventLqtPoolSizeIncrease> for pb::EventLqtPoolSizeIncrease {
36 fn from(value: EventLqtPoolSizeIncrease) -> Self {
37 Self {
38 epoch: value.epoch_index,
39 increase: Some(value.increase.into()),
40 new_total: Some(value.new_total.into()),
41 }
42 }
43}
44
45impl DomainType for EventLqtPoolSizeIncrease {
46 type Proto = pb::EventLqtPoolSizeIncrease;
47}