penumbra_sdk_governance/
genesis.rs1use anyhow::Context;
2use penumbra_sdk_proto::{penumbra::core::component::governance::v1 as pb, DomainType};
3use serde::{Deserialize, Serialize};
4
5use crate::params::GovernanceParameters;
6
7#[derive(Deserialize, Serialize, Debug, Clone, Default)]
8#[serde(try_from = "pb::GenesisContent", into = "pb::GenesisContent")]
9pub struct Content {
10 pub governance_params: GovernanceParameters,
12}
13
14impl From<Content> for pb::GenesisContent {
15 fn from(value: Content) -> Self {
16 pb::GenesisContent {
17 governance_params: Some(value.governance_params.into()),
18 }
19 }
20}
21
22impl TryFrom<pb::GenesisContent> for Content {
23 type Error = anyhow::Error;
24
25 fn try_from(msg: pb::GenesisContent) -> Result<Self, Self::Error> {
26 Ok(Content {
27 governance_params: msg
28 .governance_params
29 .context("governance params not present in protobuf message")?
30 .try_into()?,
31 })
32 }
33}
34
35impl DomainType for Content {
36 type Proto = pb::GenesisContent;
37}