use testing_framework_config::topology::{ configs::consensus::ConsensusParams, invariants::{TopologyInvariantError, validate_node_vectors}, }; use thiserror::Error; use crate::host::Host; #[derive(Debug, Error, PartialEq, Eq)] pub enum ValidationError { #[error("host count {actual} does not match participants {expected}")] HostCountMismatch { actual: usize, expected: usize }, #[error(transparent)] TopologyInvariant(#[from] TopologyInvariantError), } pub fn validate_inputs( hosts: &[Host], consensus_params: &ConsensusParams, ids: Option<&Vec<[u8; 32]>>, da_ports: Option<&Vec>, blend_ports: Option<&Vec>, ) -> Result<(), ValidationError> { let expected = consensus_params.n_participants; if hosts.len() != expected { return Err(ValidationError::HostCountMismatch { actual: hosts.len(), expected, }); } validate_node_vectors(expected, ids, da_ports, blend_ports)?; Ok(()) }