use alloc::{collections::BTreeMap, string::String};
use serde::{Deserialize, Serialize};
pub mod changes;
pub mod get;
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct JmapCalendar {
pub id: Option<String>,
pub name: Option<String>,
pub description: Option<String>,
pub color: Option<String>,
#[serde(default)]
pub sort_order: u32,
#[serde(default)]
pub is_default: bool,
#[serde(default)]
pub is_subscribed: bool,
#[serde(default)]
pub is_visible: Option<bool>,
#[serde(default)]
pub include_in_availability: JmapCalendarAvailability,
#[serde(default)]
pub default_alerts_with_time: Option<serde_json::Map<String, serde_json::Value>>,
#[serde(default)]
pub default_alerts_without_time: Option<serde_json::Map<String, serde_json::Value>>,
pub time_zone: Option<String>,
#[serde(default)]
pub share_with: Option<BTreeMap<String, JmapCalendarRights>>,
#[serde(default)]
pub my_rights: JmapCalendarRights,
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum JmapCalendarAvailability {
#[default]
All,
Attending,
None,
}
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
#[serde(default, rename_all = "camelCase")]
pub struct JmapCalendarRights {
pub may_read_free_busy: bool,
pub may_read_items: bool,
pub may_write_all: bool,
pub may_write_own: bool,
pub may_update_private: bool,
#[serde(rename = "mayRSVP")]
pub may_rsvp: bool,
pub may_share: bool,
pub may_delete: bool,
}