use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BootstrapPayload {
pub session_id: String,
pub websocket_url: String,
pub csrf_token: String,
pub initial_state_hash: String,
pub component_tree: Vec<ComponentMeta>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ComponentMeta {
pub id: String,
pub name: String,
pub dynamic_targets: Vec<DynamicTarget>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DynamicTarget {
pub id: String,
pub deps: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SessionConfig {
pub heartbeat_interval_ms: u64,
pub reconnect_max_retries: u32,
pub reconnect_backoff_ms: u64,
pub event_rate_limit: u32,
}
impl Default for SessionConfig {
fn default() -> Self {
Self {
heartbeat_interval_ms: 30_000,
reconnect_max_retries: 10,
reconnect_backoff_ms: 1_000,
event_rate_limit: 20,
}
}
}