penumbra_sdk_shielded_pool/
params.rs

1use penumbra_sdk_proto::penumbra::core::component::shielded_pool::v1 as pb;
2
3use penumbra_sdk_proto::DomainType;
4use serde::{Deserialize, Serialize};
5
6use crate::fmd;
7
8#[derive(Clone, Debug, Serialize, Deserialize, Default, PartialEq, Eq)]
9#[serde(
10    try_from = "pb::ShieldedPoolParameters",
11    into = "pb::ShieldedPoolParameters"
12)]
13pub struct ShieldedPoolParameters {
14    pub fmd_meta_params: fmd::MetaParameters,
15}
16
17impl DomainType for ShieldedPoolParameters {
18    type Proto = pb::ShieldedPoolParameters;
19}
20
21impl TryFrom<pb::ShieldedPoolParameters> for ShieldedPoolParameters {
22    type Error = anyhow::Error;
23
24    fn try_from(msg: pb::ShieldedPoolParameters) -> anyhow::Result<Self> {
25        Ok(ShieldedPoolParameters {
26            fmd_meta_params: msg
27                .fmd_meta_params
28                .ok_or_else(|| anyhow::anyhow!("missing fmd_meta_params"))?
29                .try_into()?,
30        })
31    }
32}
33
34impl From<ShieldedPoolParameters> for pb::ShieldedPoolParameters {
35    fn from(params: ShieldedPoolParameters) -> Self {
36        #[allow(deprecated)]
37        pb::ShieldedPoolParameters {
38            fmd_meta_params: Some(params.fmd_meta_params.into()),
39            fixed_fmd_params: None,
40        }
41    }
42}