use modkit_macros::domain_model;
#[allow(dead_code)]
pub trait MiniChatMetricsPort: Send + Sync {
fn record_stream_started(&self, provider: &str, model: &str);
fn record_stream_completed(&self, provider: &str, model: &str);
fn record_stream_failed(&self, provider: &str, model: &str, error_code: &str);
fn record_stream_disconnected(&self, stage: &str);
fn increment_active_streams(&self);
fn decrement_active_streams(&self);
fn record_ttft_provider_ms(&self, provider: &str, model: &str, ms: f64);
fn record_ttft_overhead_ms(&self, provider: &str, model: &str, ms: f64);
fn record_stream_total_latency_ms(&self, provider: &str, model: &str, ms: f64);
fn record_turn_mutation(&self, op: &str, result: &str);
fn record_turn_mutation_latency_ms(&self, op: &str, ms: f64);
fn record_audit_emit(&self, result: &str);
fn record_finalization_latency_ms(&self, ms: f64);
fn record_quota_preflight(&self, decision: &str, model: &str, tier: &str);
fn record_quota_reserve(&self, period: &str);
fn record_quota_commit(&self, period: &str);
fn record_quota_overshoot(&self, period: &str);
fn record_quota_estimated_tokens(&self, tokens: f64);
fn record_quota_actual_tokens(&self, tokens: f64);
fn record_stream_incomplete(&self, provider: &str, model: &str, reason: &str);
fn record_cancel_requested(&self, trigger: &str);
fn record_cancel_effective(&self, trigger: &str);
fn record_time_to_abort_ms(&self, trigger: &str, ms: f64);
fn record_streams_aborted(&self, trigger: &str);
fn record_attachment_upload(&self, kind: &str, result: &str);
fn record_attachment_upload_bytes(&self, kind: &str, bytes: f64);
fn increment_attachments_pending(&self);
fn decrement_attachments_pending(&self);
fn record_image_inputs_per_turn(&self, count: u32);
fn record_cleanup_completed(&self, resource_type: &str);
fn record_cleanup_failed(&self, resource_type: &str);
fn record_cleanup_retry(&self, resource_type: &str, reason: &str);
fn record_cleanup_backlog(&self, state: &str, resource_type: &str, count: i64);
fn record_cleanup_vs_with_failed_attachments(&self);
fn record_orphan_detected(&self, reason: &str);
fn record_orphan_finalized(&self, reason: &str);
fn record_orphan_scan_duration_seconds(&self, seconds: f64);
fn record_thread_summary_trigger(&self, result: &str);
fn record_thread_summary_execution(&self, result: &str);
fn record_thread_summary_cas_conflict(&self);
fn record_summary_fallback(&self);
fn record_code_interpreter_calls(&self, model: &str, count: u32);
}
#[allow(dead_code)]
#[domain_model]
pub struct NoopMetrics;
impl MiniChatMetricsPort for NoopMetrics {
fn record_stream_started(&self, _: &str, _: &str) {}
fn record_stream_completed(&self, _: &str, _: &str) {}
fn record_stream_failed(&self, _: &str, _: &str, _: &str) {}
fn record_stream_disconnected(&self, _: &str) {}
fn increment_active_streams(&self) {}
fn decrement_active_streams(&self) {}
fn record_ttft_provider_ms(&self, _: &str, _: &str, _: f64) {}
fn record_ttft_overhead_ms(&self, _: &str, _: &str, _: f64) {}
fn record_stream_total_latency_ms(&self, _: &str, _: &str, _: f64) {}
fn record_turn_mutation(&self, _: &str, _: &str) {}
fn record_turn_mutation_latency_ms(&self, _: &str, _: f64) {}
fn record_audit_emit(&self, _: &str) {}
fn record_finalization_latency_ms(&self, _: f64) {}
fn record_quota_preflight(&self, _: &str, _: &str, _: &str) {}
fn record_quota_reserve(&self, _: &str) {}
fn record_quota_commit(&self, _: &str) {}
fn record_quota_overshoot(&self, _: &str) {}
fn record_quota_estimated_tokens(&self, _: f64) {}
fn record_quota_actual_tokens(&self, _: f64) {}
fn record_stream_incomplete(&self, _: &str, _: &str, _: &str) {}
fn record_cancel_requested(&self, _: &str) {}
fn record_cancel_effective(&self, _: &str) {}
fn record_time_to_abort_ms(&self, _: &str, _: f64) {}
fn record_streams_aborted(&self, _: &str) {}
fn record_attachment_upload(&self, _: &str, _: &str) {}
fn record_attachment_upload_bytes(&self, _: &str, _: f64) {}
fn increment_attachments_pending(&self) {}
fn decrement_attachments_pending(&self) {}
fn record_image_inputs_per_turn(&self, _: u32) {}
fn record_code_interpreter_calls(&self, _: &str, _: u32) {}
fn record_cleanup_completed(&self, _: &str) {}
fn record_cleanup_failed(&self, _: &str) {}
fn record_cleanup_retry(&self, _: &str, _: &str) {}
fn record_cleanup_backlog(&self, _: &str, _: &str, _: i64) {}
fn record_cleanup_vs_with_failed_attachments(&self) {}
fn record_orphan_detected(&self, _: &str) {}
fn record_orphan_finalized(&self, _: &str) {}
fn record_orphan_scan_duration_seconds(&self, _: f64) {}
fn record_thread_summary_trigger(&self, _: &str) {}
fn record_thread_summary_execution(&self, _: &str) {}
fn record_thread_summary_cas_conflict(&self) {}
fn record_summary_fallback(&self) {}
}