penumbra_sdk_auction/
genesis.rs

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