import type { FafData } from '../core/types.js'; /** Read CLAUDE.md from a directory. A CLAUDE.md link that leaves the * directory, or leads to a file that is not an AI context file, is refused * (SafePathError) and nothing is read; CLAUDE.md → AGENTS.md is read * through. A CLAUDE.md that is not UTF-8 is refused too (`faf sync --direction * pull` writes what it reads into project.faf). */ export declare function readClaudeMd(dir: string): string | null; /** Write CLAUDE.md — non-destructive: injects/updates the faf block, preserves the rest. */ export declare function writeClaudeMd(dir: string, content: string): void; /** Get mtime of CLAUDE.md */ export declare function claudeMdMtime(dir: string): number | null; /** Optional knobs for the 2-line FAF stamp. */ export interface FafMetaOpts { /** Canonical structured-truth file the md claims (default `project.faf`). * Use for AI-context md (CLAUDE/GEMINI/AGENTS/.cursorrules). */ claim?: string; /** Role identifier (`readme`, `changelog`, `skill`, …). * Use for repo-meta md whose primary reader is human. Mutually exclusive with `claim`. */ doc?: string; /** Current AI-readiness score (0–100). */ score?: number; /** Sister-product family — `FAF` (default), `TAF`, `WJTTC`, … */ family?: string; /** Other docs in the repo the reader should know about. */ siblings?: string[]; } /** * Build the canonical 2-line FAF stamp. * * Line 1 — positional identity: `name | lang | type | description` * Line 2 — key=value navigation/state: `claim=… | score=… | family=… | siblings=…` * * Spec: `memory/cross-ai-2-line-meta-stamp.md`. Issue #64. */ export declare function fafMetaTag(data: FafData, opts?: FafMetaOpts): string; /** Render CLAUDE.md content from .faf data */ export declare function renderClaudeMd(data: FafData): string; /** Extract project data from CLAUDE.md content (pull direction) */ export declare function parseClaudeMd(content: string): Partial;