penumbra_sdk_app/
event.rs1use 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}