use secrecy::SecretString;
use serde::{Deserialize, Serialize};

#[derive(Clone, Debug)]
pub struct AgentConfig {
    pub mongodb_uri: String,
    pub mongodb_database: String,
    pub litellm_url: String,
    pub litellm_api_key: SecretString,
    pub litellm_model: String,
    pub litellm_embed_model: String,
    pub github_token: Option<SecretString>,
    pub github_webhook_secret: Option<SecretString>,
    pub gitlab_url: Option<String>,
    pub gitlab_token: Option<SecretString>,
    pub gitlab_webhook_secret: Option<SecretString>,
    pub jira_url: Option<String>,
    pub jira_email: Option<String>,
    pub jira_api_token: Option<SecretString>,
    pub jira_project_key: Option<String>,
    pub searxng_url: Option<String>,
    pub nvd_api_key: Option<SecretString>,
    pub agent_port: u16,
    pub scan_schedule: String,
    pub cve_monitor_schedule: String,
    pub git_clone_base_path: String,
    pub ssh_key_path: String,
    pub keycloak_url: Option<String>,
    pub keycloak_realm: Option<String>,
}

#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct DashboardConfig {
    pub mongodb_uri: String,
    pub mongodb_database: String,
    pub agent_api_url: String,
    pub dashboard_port: u16,
    pub mcp_endpoint_url: Option<String>,
}
