penumbra_sdk_app/
event.rs

1use anyhow::{anyhow, Context};
2use penumbra_sdk_proto::{penumbra::core::app::v1 as pb, DomainType};
3use prost::Name as _;
4
5use crate::params::AppParameters;
6
7#[derive(Clone, Debug)]
8struct EventAppParametersChange {
9    new_parameters: AppParameters,
10}
11
12impl TryFrom<pb::EventAppParametersChange> for EventAppParametersChange {
13    type Error = anyhow::Error;
14
15    fn try_from(value: pb::EventAppParametersChange) -> Result<Self, Self::Error> {
16        fn inner(value: pb::EventAppParametersChange) -> anyhow::Result<EventAppParametersChange> {
17            Ok(EventAppParametersChange {
18                new_parameters: value
19                    .new_parameters
20                    .ok_or(anyhow!("missing `new_parameters`"))?
21                    .try_into()?,
22            })
23        }
24        inner(value).context(format!("parsing {}", pb::EventAppParametersChange::NAME))
25    }
26}
27
28impl From<EventAppParametersChange> for pb::EventAppParametersChange {
29    fn from(value: EventAppParametersChange) -> Self {
30        Self {
31            new_parameters: Some(value.new_parameters.into()),
32        }
33    }
34}
35
36impl DomainType for EventAppParametersChange {
37    type Proto = pb::EventAppParametersChange;
38}