use std::path::PathBuf;
use datasize::DataSize;
use serde::{Deserialize, Serialize};
use casper_types::SecretKey;
use crate::{
components::chainspec_loader::{HighwayConfig, UpgradePoint},
types::Timestamp,
utils::External,
Chainspec,
};
#[derive(DataSize, Debug, Deserialize, Serialize, Default, Clone)]
#[serde(deny_unknown_fields)]
pub struct Config {
pub secret_key_path: External<SecretKey>,
pub unit_hashes_folder: PathBuf,
}
#[derive(DataSize, Debug)]
pub(crate) struct ProtocolConfig {
pub(crate) highway_config: HighwayConfig,
pub(crate) auction_delay: u64,
pub(crate) unbonding_delay: u64,
pub(crate) name: String,
pub(crate) timestamp: Timestamp,
pub(crate) upgrades: Vec<UpgradePoint>,
}
impl From<&Chainspec> for ProtocolConfig {
fn from(c: &Chainspec) -> Self {
ProtocolConfig {
highway_config: c.genesis.highway_config.clone(),
auction_delay: c.genesis.auction_delay,
unbonding_delay: c.genesis.unbonding_delay,
name: c.genesis.name.clone(),
timestamp: c.genesis.timestamp,
upgrades: c.upgrades.clone(),
}
}
}