use std::collections::HashMap;
use serde::{Deserialize, Serialize};
#[derive(
Debug, Clone, Serialize, Deserialize, zerompk::ToMessagePack, zerompk::FromMessagePack,
)]
pub struct HandshakeMsg {
pub jwt_token: String,
pub vector_clock: HashMap<String, HashMap<String, u64>>,
pub subscribed_shapes: Vec<String>,
pub client_version: String,
#[serde(default)]
pub lite_id: String,
#[serde(default)]
pub epoch: u64,
#[serde(default)]
pub wire_version: u16,
}
#[derive(
Debug, Clone, Serialize, Deserialize, zerompk::ToMessagePack, zerompk::FromMessagePack,
)]
pub struct HandshakeAckMsg {
pub success: bool,
pub session_id: String,
pub server_clock: HashMap<String, u64>,
pub error: Option<String>,
#[serde(default)]
pub fork_detected: bool,
#[serde(default)]
pub server_wire_version: u16,
}
#[derive(
Debug, Clone, Serialize, Deserialize, zerompk::ToMessagePack, zerompk::FromMessagePack,
)]
pub struct TokenRefreshMsg {
pub new_token: String,
}
#[derive(
Debug, Clone, Serialize, Deserialize, zerompk::ToMessagePack, zerompk::FromMessagePack,
)]
pub struct TokenRefreshAckMsg {
pub success: bool,
pub error: Option<String>,
#[serde(default)]
pub expires_in_secs: u64,
}
#[derive(
Debug, Clone, Serialize, Deserialize, zerompk::ToMessagePack, zerompk::FromMessagePack,
)]
pub struct PingPongMsg {
pub timestamp_ms: u64,
pub is_pong: bool,
}