use datasize::DataSize;
use serde::Deserialize;
use crate::{
logging::LoggingConfig, types::NodeConfig, BlockProposerConfig, ConsensusConfig,
ContractRuntimeConfig, DeployAcceptorConfig, EventStreamServerConfig, FetcherConfig,
GossipConfig, LinearChainSyncConfig, RestServerConfig, RpcServerConfig, SmallNetworkConfig,
StorageConfig,
};
#[derive(DataSize, Debug, Default, Deserialize)]
#[serde(deny_unknown_fields)]
pub(crate) struct Config {
pub(crate) node: NodeConfig,
pub(crate) logging: LoggingConfig,
pub(crate) consensus: ConsensusConfig,
pub(crate) network: SmallNetworkConfig,
pub(crate) event_stream_server: EventStreamServerConfig,
pub(crate) rest_server: RestServerConfig,
pub(crate) rpc_server: RpcServerConfig,
pub(crate) storage: StorageConfig,
pub(crate) gossip: GossipConfig,
pub(crate) fetcher: FetcherConfig,
pub(crate) contract_runtime: ContractRuntimeConfig,
pub(crate) deploy_acceptor: DeployAcceptorConfig,
pub(crate) linear_chain_sync: LinearChainSyncConfig,
#[serde(default)]
pub(crate) block_proposer: BlockProposerConfig,
}