use super::encode::encode_bytes;
use super::{Subject, Transcript};
impl Transcript<'_> {
#[must_use]
pub fn encoded<S: Subject>(&self) -> Vec<u8> {
let profile = self.profile();
let role = self.role();
let mut bytes = Vec::new();
encode_bytes(profile.stem().as_bytes(), &mut bytes);
encode_bytes(profile.name().as_bytes(), &mut bytes);
bytes.extend_from_slice(&profile.version().position().to_be_bytes());
encode_bytes(S::NAME.as_bytes(), &mut bytes);
encode_bytes(role.name().as_bytes(), &mut bytes);
bytes.push(role.slot());
bytes.push(self.anchoring().slot());
match self.anchoring().commitment() {
Some(anchor) => encode_bytes(anchor, &mut bytes),
None => encode_bytes(&[], &mut bytes),
}
encode_bytes(self.material(), &mut bytes);
bytes.extend_from_slice(&self.position().to_be_bytes());
bytes
}
}