penumbra_sdk_app/
params.rs1use penumbra_sdk_auction::params::AuctionParameters;
2use penumbra_sdk_community_pool::params::CommunityPoolParameters;
3use penumbra_sdk_dex::DexParameters;
4use penumbra_sdk_distributions::DistributionsParameters;
5use penumbra_sdk_fee::FeeParameters;
6use penumbra_sdk_funding::FundingParameters;
7use penumbra_sdk_governance::params::GovernanceParameters;
8use penumbra_sdk_ibc::params::IBCParameters;
9use penumbra_sdk_proto::core::app::v1 as pb;
10use penumbra_sdk_proto::view::v1 as pb_view;
11use penumbra_sdk_proto::DomainType;
12use penumbra_sdk_sct::params::SctParameters;
13use penumbra_sdk_shielded_pool::params::ShieldedPoolParameters;
14use penumbra_sdk_stake::params::StakeParameters;
15use serde::{Deserialize, Serialize};
16
17pub mod change;
18
19#[derive(Clone, Debug, Serialize, Deserialize, Default, PartialEq, Eq)]
20#[serde(try_from = "pb::AppParameters", into = "pb::AppParameters")]
21pub struct AppParameters {
22 pub chain_id: String,
23 pub auction_params: AuctionParameters,
24 pub community_pool_params: CommunityPoolParameters,
25 pub distributions_params: DistributionsParameters,
26 pub dex_params: DexParameters,
27 pub fee_params: FeeParameters,
28 pub funding_params: FundingParameters,
29 pub governance_params: GovernanceParameters,
30 pub ibc_params: IBCParameters,
31 pub sct_params: SctParameters,
32 pub shielded_pool_params: ShieldedPoolParameters,
33 pub stake_params: StakeParameters,
34}
35
36impl DomainType for AppParameters {
37 type Proto = pb::AppParameters;
38}
39
40impl TryFrom<pb::AppParameters> for AppParameters {
41 type Error = anyhow::Error;
42
43 fn try_from(msg: pb::AppParameters) -> anyhow::Result<Self> {
44 Ok(AppParameters {
45 chain_id: msg.chain_id,
46 auction_params: msg
47 .auction_params
48 .ok_or_else(|| anyhow::anyhow!("proto response missing auction params"))?
49 .try_into()?,
50 community_pool_params: msg
51 .community_pool_params
52 .ok_or_else(|| anyhow::anyhow!("proto response missing community pool params"))?
53 .try_into()?,
54 distributions_params: msg
55 .distributions_params
56 .ok_or_else(|| anyhow::anyhow!("proto response missing distribution params"))?
57 .try_into()?,
58 fee_params: msg
59 .fee_params
60 .ok_or_else(|| anyhow::anyhow!("proto response missing fee params"))?
61 .try_into()?,
62 funding_params: msg
63 .funding_params
64 .ok_or_else(|| anyhow::anyhow!("proto response missing funding params"))?
65 .try_into()?,
66 governance_params: msg
67 .governance_params
68 .ok_or_else(|| anyhow::anyhow!("proto response missing governance params"))?
69 .try_into()?,
70 ibc_params: msg
71 .ibc_params
72 .ok_or_else(|| anyhow::anyhow!("proto response missing ibc params"))?
73 .try_into()?,
74 sct_params: msg
75 .sct_params
76 .ok_or_else(|| anyhow::anyhow!("proto response missing sct params"))?
77 .try_into()?,
78 shielded_pool_params: msg
79 .shielded_pool_params
80 .ok_or_else(|| anyhow::anyhow!("proto response missing shielded pool params"))?
81 .try_into()?,
82 stake_params: msg
83 .stake_params
84 .ok_or_else(|| anyhow::anyhow!("proto response missing stake params"))?
85 .try_into()?,
86 dex_params: msg
87 .dex_params
88 .ok_or_else(|| anyhow::anyhow!("proto response missing dex params"))?
89 .try_into()?,
90 })
91 }
92}
93
94impl From<AppParameters> for pb::AppParameters {
95 fn from(params: AppParameters) -> Self {
96 pb::AppParameters {
97 chain_id: params.chain_id,
98 auction_params: Some(params.auction_params.into()),
99 community_pool_params: Some(params.community_pool_params.into()),
100 distributions_params: Some(params.distributions_params.into()),
101 fee_params: Some(params.fee_params.into()),
102 funding_params: Some(params.funding_params.into()),
103 governance_params: Some(params.governance_params.into()),
104 ibc_params: Some(params.ibc_params.into()),
105 sct_params: Some(params.sct_params.into()),
106 shielded_pool_params: Some(params.shielded_pool_params.into()),
107 stake_params: Some(params.stake_params.into()),
108 dex_params: Some(params.dex_params.into()),
109 }
110 }
111}
112impl TryFrom<pb_view::AppParametersResponse> for AppParameters {
113 type Error = anyhow::Error;
114
115 fn try_from(response: pb_view::AppParametersResponse) -> Result<Self, Self::Error> {
116 response
117 .parameters
118 .ok_or_else(|| anyhow::anyhow!("empty AppParametersResponse message"))?
119 .try_into()
120 }
121}
122
123impl TryFrom<pb::AppParametersResponse> for AppParameters {
124 type Error = anyhow::Error;
125
126 fn try_from(response: pb::AppParametersResponse) -> Result<Self, Self::Error> {
127 response
128 .app_parameters
129 .ok_or_else(|| anyhow::anyhow!("empty AppParametersResponse message"))?
130 .try_into()
131 }
132}