1use crate::MESSAGE_EXPIRY_WINDOW;
2use alloy_primitives::ChainId;
3use kona_registry::HashMap;
4
5#[derive(Debug, Clone, PartialEq, Eq)]
7#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
8#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))]
9pub struct ChainDependency {}
10
11#[derive(Debug, Clone, PartialEq, Eq)]
13#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
14#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))]
15pub struct DependencySet {
16 pub dependencies: HashMap<ChainId, ChainDependency>,
18
19 pub override_message_expiry_window: Option<u64>,
21}
22
23impl DependencySet {
24 pub const fn get_message_expiry_window(&self) -> u64 {
26 match self.override_message_expiry_window {
27 Some(window) if window > 0 => window,
28 _ => MESSAGE_EXPIRY_WINDOW,
29 }
30 }
31}
32
33#[cfg(test)]
34mod tests {
35 use super::*;
36 use alloy_primitives::ChainId;
37 use kona_registry::HashMap;
38
39 const fn create_dependency_set(
40 dependencies: HashMap<ChainId, ChainDependency>,
41 override_expiry: u64,
42 ) -> DependencySet {
43 DependencySet { dependencies, override_message_expiry_window: Some(override_expiry) }
44 }
45
46 #[test]
47 fn test_get_message_expiry_window_default() {
48 let deps = HashMap::default();
49 let ds = create_dependency_set(deps, 0);
51 assert_eq!(
52 ds.get_message_expiry_window(),
53 MESSAGE_EXPIRY_WINDOW,
54 "Should return default expiry window when override is 0"
55 );
56 }
57
58 #[test]
59 fn test_get_message_expiry_window_override() {
60 let deps = HashMap::default();
61 let override_value = 12345;
62 let ds = create_dependency_set(deps, override_value);
63 assert_eq!(
64 ds.get_message_expiry_window(),
65 override_value,
66 "Should return override expiry window when it's non-zero"
67 );
68 }
69}