use crate::emitter::SpanStatus;
use crate::hitl::ResumeRecord;
use std::sync::Arc;
pub trait MetricsHook: Send + Sync {
fn on_node_complete(&self, node_name: &str, duration_ms: u64, status: SpanStatus);
fn on_graph_complete(&self, thread_id: &str, total_cost: f64, total_duration_ms: u64);
fn on_checkpoint_saved(&self, thread_id: &str, checkpoint_id: &str);
fn on_resume(&self, _record: &ResumeRecord) {}
}
pub struct NoopMetricsHook;
impl MetricsHook for NoopMetricsHook {
fn on_node_complete(&self, _: &str, _: u64, _: SpanStatus) {}
fn on_graph_complete(&self, _: &str, _: f64, _: u64) {}
fn on_checkpoint_saved(&self, _: &str, _: &str) {}
fn on_resume(&self, _: &ResumeRecord) {}
}
pub(crate) fn default_metrics_hook() -> Arc<dyn MetricsHook> {
Arc::new(NoopMetricsHook)
}