/** * Health diagnostic panel data provider. * * Subscribes to the RuntimeHealthAggregator and produces HealthDashboardData * snapshots for the health dashboard diagnostics panel. * * Implements the health visualization layer for diagnostics. * SLO status rows are included when an SloCollector is attached. * Remediation actions are included when a CascadeTimer is attached. */ import type { RuntimeHealthAggregator } from '../../health/aggregator.js'; import type { HealthDashboardData } from '../types.js'; import type { SloCollector } from '../../perf/slo-collector.js'; import type { CascadeTimer } from '../../health/cascade-timing.js'; export declare class HealthPanel { private readonly _aggregator; private readonly _sloCollector; private readonly _cascadeTimer; private _current; /** Registered change notification callbacks. */ private readonly _subscribers; /** Unsubscribe function from the aggregator. */ private _unsub; /** * @param aggregator - The runtime health aggregator to subscribe to. * @param sloCollector - Optional SLO collector for SLO status rows. * When provided, SLO rows are included in every dashboard snapshot. * @param cascadeTimer - Optional CascadeTimer for remediation action rows. * When provided, active failed domains are evaluated and remediation * playbook IDs are surfaced in every dashboard snapshot. */ constructor(aggregator: RuntimeHealthAggregator, sloCollector?: SloCollector | null, cascadeTimer?: CascadeTimer | null); /** * Build a HealthDashboardData snapshot from a CompositeHealth record. */ private _buildDashboard; /** * Build remediation action rows by evaluating cascade rules for all * currently-failed domains using the CascadeTimer. * * Returns an empty array when no CascadeTimer is attached or when * no domains are in the failed state. */ private _buildRemediationActions; /** * Build SLO status rows from the current SloCollector snapshot. * Returns an empty array when no SloCollector is attached. */ private _buildSloRows; /** * Return the current health dashboard snapshot. * This is updated synchronously when the aggregator fires. */ getSnapshot(): HealthDashboardData; private _withIssue; /** * Register a callback invoked whenever health data changes. * @returns An unsubscribe function. */ subscribe(callback: () => void): () => void; /** * Release the aggregator subscription. */ dispose(): void; private _notify; } //# sourceMappingURL=health.d.ts.map