kona_interop/
depset.rs

1use crate::MESSAGE_EXPIRY_WINDOW;
2use alloy_primitives::ChainId;
3use kona_registry::HashMap;
4
5/// Configuration for a dependency of a chain
6#[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/// Configuration for the dependency set
12#[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    /// Dependencies information per chain.
17    pub dependencies: HashMap<ChainId, ChainDependency>,
18
19    /// Override message expiry window to use for this dependency set.
20    pub override_message_expiry_window: Option<u64>,
21}
22
23impl DependencySet {
24    /// Returns the message expiry window associated with this dependency set.
25    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        // override_message_expiry_window is 0, so default should be used
50        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}