use bcode_session_models::{
SessionEvent, SessionId, SessionInputHistoryEntry, SessionLiveEvent, SessionSummary,
SessionUsageSummary,
};
use tokio::sync::broadcast;
#[derive(Debug)]
pub struct SessionAttachment {
pub session: SessionSummary,
pub history: Vec<SessionEvent>,
pub input_history: Vec<SessionInputHistoryEntry>,
pub usage_summary: SessionUsageSummary,
pub live_checkpoints: Vec<SessionLiveEvent>,
pub events: broadcast::Receiver<SessionEvent>,
pub live_events: broadcast::Receiver<SessionLiveEvent>,
}
#[derive(Debug)]
pub struct SessionEventSubscription {
pub session: SessionSummary,
pub events: broadcast::Receiver<SessionEvent>,
pub live_events: broadcast::Receiver<SessionLiveEvent>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct SessionMutationCommitted {
pub session_id: SessionId,
pub event: SessionEvent,
pub summary: SessionSummary,
}
#[derive(Debug)]
pub struct SessionProjectionWindowAttachment {
pub attachment: SessionAttachment,
pub projection_window: bcode_session_models::ProjectionWindow,
}