penumbra_sdk_auction/
genesis.rs1use 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 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}