use miden_protocol::crypto::hash::rpo::Rpo256;
use miden_protocol::{Felt, Word};
pub fn felt_from_u64_reduced(value: u64) -> Felt {
Felt::new(value % Felt::ORDER).expect("value reduced modulo the field order is canonical")
}
pub fn domain_tag_word(bytes: &[u8]) -> Word {
let elements: Vec<Felt> = bytes
.chunks(8)
.map(|chunk| {
let mut chunk_bytes = [0u8; 8];
chunk_bytes[..chunk.len()].copy_from_slice(chunk);
felt_from_u64_reduced(u64::from_le_bytes(chunk_bytes))
})
.collect();
Rpo256::hash_elements(&elements)
}