1use alloc::string::String;
2use alloy_primitives::Address;
3use serde::{Deserialize, Serialize};
4
5use crate::blocks::{BlockInfo, Epoch};
6use crate::system::SystemConfig;
7
8mod base;
9mod optimism;
10
11#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
13pub struct ChainConfig {
14 pub network: String,
16 pub l1_chain_id: u64,
18 pub l2_chain_id: u64,
20 pub l1_start_epoch: Epoch,
22 pub l2_genesis: BlockInfo,
24 pub system_config: SystemConfig,
26 pub batch_inbox: Address,
28 pub deposit_contract: Address,
30 pub system_config_contract: Address,
32 pub max_channel_size: u64,
34 pub channel_timeout: u64,
36 pub seq_window_size: u64,
38 pub max_seq_drift: u64,
40 pub regolith_time: u64,
42 #[serde(default = "default_blocktime")]
44 pub blocktime: u64,
45 pub l2_to_l1_message_passer: Address,
47}
48
49fn default_blocktime() -> u64 {
50 2
51}