use serde::{Deserialize, Serialize};

use crate::bus::{ClientVisibility, CompletionStatus, TurnOrigin};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MessageMeta {
    pub id: String,
    pub session_id: String,
    pub seq: i64,
    pub role: String,
    pub content: String,
    pub reasoning_content: Option<String>,
    pub provider_state: Option<String>,
    pub turn_id: Option<String>,
    pub iteration: Option<i64>,
    pub completion_status: CompletionStatus,
    pub client_visibility: ClientVisibility,
    pub turn_origin: TurnOrigin,
    pub media_refs: Option<String>,
    pub tool_call_id: Option<String>,
    pub tool_name: Option<String>,
    pub tool_calls: Option<String>,
    pub source: Option<String>,
    pub created_at: i64,
}
