import { PainChainReadModel } from './pain-chain-read-model.js'; import type { PainChainTrace } from './pain-chain-read-model.js'; import { PruningReadModel } from './pruning-read-model.js'; import type { CandidateAuditResult } from './candidate-audit.js'; import type { GfiWorkspaceSnapshot } from './gfi/gfi-read-model.js'; export type OverallHealthStatus = 'healthy' | 'degraded' | 'error'; export interface OperatorHealthSnapshot { generatedAt: string; workspace: string; painChain: { lastSuccessfulChain: PainChainTrace | null; failureCategory: string | null; }; candidateLedger: { auditStatus: CandidateAuditResult['status']; orphanCandidateCount: number; missingLedgerCount: number; }; pruning: { watchCount: number; reviewCount: number; orphanDerivedCandidateCount: number; }; gfi: GfiWorkspaceSnapshot; overallStatus: OverallHealthStatus; recommendedActions: string[]; /** Total number of tasks in the workspace DB. Used to distinguish cold-start (0 tasks) from real degradation (tasks exist but no successful chain). */ totalTaskCount: number; } export interface OperatorHealthReadModelOptions { workspaceDir: string; painChainReadModel?: PainChainReadModel; pruningReadModel?: PruningReadModel; } export declare class OperatorHealthReadModel { private readonly workspaceDir; private readonly injectedPainChainReadModel; private readonly injectedPruningReadModel; private ownedPainChainReadModel; private ownedPruningReadModel; constructor(opts: OperatorHealthReadModelOptions); getSnapshot(): Promise; close(): Promise; } //# sourceMappingURL=operator-health-read-model.d.ts.map