pub mod dto;
pub mod error;
mod from_dto;
mod to_dto;
mod action_dto;
mod projection_dto;
pub mod share_state;
pub use dto::AstDocumentEnvelope;
pub use error::ConversionError;
pub use action_dto::{deserialize_action, serialize_action};
pub use projection_dto::serialize_projection;
pub use share_state::{decode_share_state_json, deserialize_share_state, encode_share_state_json};
use cp_ast_core::operation::AstEngine;
pub fn serialize_ast(engine: &AstEngine) -> Result<String, ConversionError> {
let envelope = to_dto::engine_to_envelope(engine);
serde_json::to_string_pretty(&envelope).map_err(ConversionError::from)
}
pub fn serialize_ast_compact(engine: &AstEngine) -> Result<String, ConversionError> {
let envelope = to_dto::engine_to_envelope(engine);
serde_json::to_string(&envelope).map_err(ConversionError::from)
}
pub fn deserialize_ast(json: &str) -> Result<AstEngine, ConversionError> {
let envelope: AstDocumentEnvelope = serde_json::from_str(json)?;
from_dto::envelope_to_engine(envelope)
}