mithril-common 0.7.14

Common types, interfaces, and utilities for Mithril nodes.
use std::collections::BTreeSet;

use serde::{Deserialize, Serialize};

use crate::entities::{
    CardanoBlocksTransactionsSigningConfig, CardanoTransactionsSigningConfig, ProtocolParameters,
};
use crate::messages::SignedEntityTypeDiscriminantsMessage;

/// ProtocolConfiguration represents the protocol configuration of an epoch
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ProtocolConfigurationMessage {
    /// Protocol parameters
    pub protocol_parameters: ProtocolParameters,

    /// Cardano transactions signing configuration
    #[serde(skip_serializing_if = "Option::is_none")]
    pub cardano_transactions_signing_config: Option<CardanoTransactionsSigningConfig>,

    /// Cardano blocks and transactions signing configuration
    #[serde(skip_serializing_if = "Option::is_none")]
    pub cardano_blocks_transactions_signing_config: Option<CardanoBlocksTransactionsSigningConfig>,

    /// Aggregator enabled signed entity types
    pub available_signed_entity_types: BTreeSet<SignedEntityTypeDiscriminantsMessage>,
}