penumbra_sdk_shielded_pool/
params.rs1use 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}