use serde::{Serialize, Deserialize};
use uuid::Uuid;

// --- Commands ---
///
/// Published by: `api-gateway`
/// Consumed by: `*-provider-services`
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct FetchCompanyDataCommand {
    pub request_id: Uuid,
    pub symbol: String,
    pub market: String,
}

/// Command to start a full report generation workflow.
///
/// Published by: `api-gateway`
/// Consumed by: `report-generator-service`
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct GenerateReportCommand {
    pub request_id: Uuid,
    pub symbol: String,
    pub template_id: String,
}

// --- Events ---
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct CompanyProfilePersistedEvent {
    pub request_id: Uuid,
    pub symbol: String,
}

#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct FinancialsPersistedEvent {
    pub request_id: Uuid,
    pub symbol: String,
    pub years_updated: Vec<u16>,
}


