use serde::{
Deserialize,
Serialize,
};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Event {
Listening,
Disconnect,
Message(MessageEvent),
Typing(TypingEvent),
Presence(PresenceEvent),
Error(EventError),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MessageEvent {
pub message_id: Option<String>,
pub thread_id: String,
pub sender_id: String,
pub text: Option<String>,
pub timestamp_ms: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TypingEvent {
pub user_id: String,
pub thread_id: Option<String>,
pub is_typing: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PresenceEvent {
pub user_id: String,
pub is_active: bool,
pub last_active_ms: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EventError {
pub kind: EventKind,
pub message: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum EventKind {
Parse,
Transport,
Unknown,
}