/** * Supplements list -> FactStore. PURE deterministic reconcile. * NO LLM, NO network, NO Date.now() — `now` is injected. * Hand-rolled frontmatter parse mirrors lab-note.ts:120-148. * NEVER import src/vault. */ import { FactStore } from "../state/facts.js"; /** A single supplement entry parsed from the markdown-frontmatter list. */ export interface SupplementEntry { name: string; dose: string | undefined; } /** Placeholder value when --dose is omitted (FactSchema requires value.min(1)). */ export declare const DEFAULT_DOSE = "unspecified"; /** * Parse a supplements markdown-frontmatter file into a list of entries. * * Expected format: * ``` * --- * supplements: * - Vitamin D | 1000 IU * - Magnesium | 200 mg * --- * ``` * * Replicates the hand-rolled fence-find loop from lab-note.ts:121-136. * NEVER imports src/vault/frontmatter.ts (lab-note.ts:9-12 precedent). * NEVER imports parseLabNote — it returns the lab flat-scalar shape and is list-unaware. */ export declare function parseSupplementsFile(raw: string): SupplementEntry[]; /** * Build a FactInput from a supplement name + optional dose. * * scope = "medical", subject = supplement name, predicate = "dose", value = dose ?? DEFAULT_DOSE. * `now` is injected (never reads the clock). * * bober: predicate "dose" makes each supplement its own subject row in FactStore; * contrast with medications which use subject "patient", predicate "takes-medication". */ export declare function supplementToFact(name: string, dose: string | undefined, now: string): { scope: string; subject: string; predicate: string; value: string; confidence: number; sourceRunId: null; tValid: string; tCreated: string; }; /** Injectable dependencies for runSupplementAdd — production callers pass undefined. */ export interface SupplementAddDeps { /** Override the FactStore (e.g. in-memory store in tests). */ store?: FactStore; /** Override the current time ISO string (default: new Date().toISOString()). */ now?: string; } /** * Core logic for `bober medical supplements add [--dose ]`. * * Reconciles one supplement into FactStore (scope "medical") via writeFact. * NO judge — deterministic ADD/UPDATE/NOOP path only. * `now` is stamped at this boundary; the pure reconcile path never reads the clock. * * .action() MUST NOT throw — errors are caught, process.exitCode is set to 1, and the * function returns. Pattern mirrors runImportLabs in medical.ts:203-212. */ export declare function runSupplementAdd(projectRoot: string, name: string, opts: { dose?: string; }, deps?: SupplementAddDeps): Promise; /** * Core logic for `bober medical supplements list [--file ]`. * * Reads the supplements markdown-frontmatter file and prints each entry to stdout. * Default file path: /.bober/medical/supplements.md * * .action() MUST NOT throw — errors are caught and process.exitCode is set to 1. */ export declare function runSupplementList(projectRoot: string, opts: { file?: string; }): Promise; //# sourceMappingURL=supplements.d.ts.map