use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use super::{Block, Comment, TrackedChange};
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct Document {
pub metadata: DocMetadata,
pub blocks: Vec<Block>,
pub tracked_changes: Vec<TrackedChange>,
pub comments: Vec<Comment>,
pub raw_changes: Vec<TrackedChange>,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct DocMetadata {
pub title: Option<String>,
pub author: Option<String>,
pub created: Option<DateTime<Utc>>,
pub modified: Option<DateTime<Utc>>,
pub revision: Option<u32>,
}