pub(crate) mod network;
pub(crate) mod augmented_node;
pub(crate) mod types;
pub use augmented_node::DistributedMerkleTree;
pub use network::NetworkNode;
pub use network::PathInfo;
pub use network::SiblingInfo;
pub use network::NodeInfo;
pub use types::Data;
pub use types::Group;
pub use types::Item;
pub use types::User;
use sha2::Digest;
use std::hash::Hash;
pub(crate) fn get_tree_node_hash(group_roots: Vec<String>, data_roots: Vec<String>) -> String {
let group_hash_raw = format!("{}{}", group_roots.join(""), data_roots.join(""));
let mut hasher = sha2::Sha256::new();
hasher.update(group_hash_raw.as_bytes());
let hash_bytes: [u8; 32] = hasher.finalize().into();
hex::encode(hash_bytes)
}