use crate::domain::{DomainError, PublishConfig, ReportConfig};
use async_trait::async_trait;
use std::collections::HashMap;
#[async_trait]
pub trait ConfigurationProvider: Send + Sync {
async fn get_report_config(&self) -> Result<ReportConfig, DomainError>;
async fn get_publish_config(&self) -> Result<Option<PublishConfig>, DomainError>;
async fn get_output_format(&self) -> Result<OutputFormat, DomainError>;
async fn get_command_timeout(&self) -> Result<u64, DomainError>;
async fn is_verbose_enabled(&self) -> Result<bool, DomainError>;
async fn get_labels(&self) -> Result<HashMap<String, String>, DomainError>;
}
#[derive(Debug, Clone, PartialEq, Default)]
pub enum OutputFormat {
Json,
Toml,
#[default]
Both,
}