//#[derive(Debug, Clone, Serialize)]
//pub struct KubePrometheusMonitorScore {
//    pub kube_prometheus_config: KubePrometheusConfig,
//    pub alert_channel_configs: Vec<dyn AlertChannelConfig>,
//}

//impl<T: Topology + Debug + HelmCommand + Monitor<T>> MonitorConfig<T>
//    for KubePrometheusMonitorScore
//{
//    fn build_monitor(&self) -> Box<dyn Monitor<T>> {
//        Box::new(self.clone())
//    }
//}

//impl<T: Topology + HelmCommand + Debug + Clone + 'static + Monitor<T>> Score<T>
//    for KubePrometheusMonitorScore
//{
//    fn create_interpret(&self) -> Box<dyn Interpret<T>> {
//        Box::new(KubePrometheusMonitorInterpret {
//            score: self.clone(),
//        })
//    }
//
//    fn name(&self) -> String {
//        "KubePrometheusMonitorScore".to_string()
//    }
//}

//#[derive(Debug, Clone)]
//pub struct KubePrometheusMonitorInterpret {
//    score: KubePrometheusMonitorScore,
//}

//#[async_trait]
//impl AlertChannelConfig for KubePrometheusMonitorInterpret {
//    async fn build_alert_channel(
//        &self,
//    ) -> Box<dyn AlertChannel> {
//        todo!()
//    }
//}
//#[async_trait]
//impl<T: Topology + HelmCommand + Debug + Monitor<T>> Interpret<T>
//    for KubePrometheusMonitorInterpret
//{
//    async fn execute(
//        &self,
//        inventory: &Inventory,
//        topology: &T,
//    ) -> Result<Outcome, InterpretError> {
//        let monitor = self.score.build_monitor();
//
//        let mut alert_channels = Vec::new();
//        //for config in self.score.alert_channel_configs {
//        //    alert_channels.push(self.build_alert_channel());
//        //}
//
//        monitor
//            .deploy_monitor(inventory, topology, alert_channels)
//            .await
//    }
//
//    fn get_name(&self) -> InterpretName {
//        todo!()
//    }
//
//    fn get_version(&self) -> Version {
//        todo!()
//    }
//
//    fn get_status(&self) -> InterpretStatus {
//        todo!()
//    }
//
//    fn get_children(&self) -> Vec<Id> {
//        todo!()
//    }
//}


//#[async_trait]
//pub trait PrometheusAlertChannel {
//    fn get_alert_channel_global_settings(&self) -> Option<AlertManagerChannelGlobalConfigs>;
//    fn get_alert_channel_route(&self) -> AlertManagerChannelRoute;
//    fn get_alert_channel_receiver(&self) -> AlertManagerChannelReceiver;
//}

