/** * Lab trend analyzer — deterministic reference-range and slope rules. * * PURE / NO network / NO LLM / NO Date.now() / NO async / NO fs. * Identical input => identical output. * * ADR-3: The LLM NEVER performs arithmetic. All trend math is delegated exclusively to * NumericsQueryLayer.getLabTrend (slope + latestValue). No hand-rolled slope arithmetic. * * Rules: * A. Reference-range crossing: latestValue outside [referenceLow, referenceHigh] * → kind 'watch' (severity 3, urgency 3); * >20% beyond the edge → kind 'risk' (severity 4, urgency 4). * B. Slope-toward-edge: slope != null, value is in range, trending toward the nearer * reference edge with a projected crossing → kind 'watch' (severity 2, urgency 2). * * Abstains (empty findings) when sampleCount === 0 for a biomarker. * Reference range is read from store.getLabSeries (LabTrend does not carry it). */ import type { HealthDataStore } from "../health-store.js"; import type { MedicalFinding } from "./finding.js"; /** * Analyze lab trends for a set of biomarkers and return detected findings. * * PURE, synchronous, deterministic. No async, no fs, no network, no LLM. * Delegates ALL trend math to NumericsQueryLayer.getLabTrend (ADR-3). * Reference ranges are read from store.getLabSeries (LabTrend does not carry them). * * @param store HealthDataStore (caller is responsible for lifecycle) * @param biomarkers List of biomarker names to analyze * @param opts { now: ISO 8601 injected timestamp } */ export declare function analyzeTrends(store: HealthDataStore, biomarkers: string[], opts: { now: string; }): MedicalFinding[]; //# sourceMappingURL=trends.d.ts.map