use serde_json::Value;
use crate::canonical::canonical;
use crate::error::Error;
use crate::schema::{validate_sealed_turn, validate_turn};
pub fn serialize(value: &Value) -> Result<Vec<u8>, Error> {
canonical(value)
}
pub fn deserialize(bytes: &[u8]) -> Result<Value, Error> {
let parsed: Value = serde_json::from_slice(bytes)?;
if validate_sealed_turn(&parsed).is_ok() {
return Ok(parsed);
}
validate_turn(&parsed).map_err(|e| Error::Invalid(format!("deserialize: {e}")))?;
Ok(parsed)
}