import { RecallXraySnapshot } from './recall-xray.js';
import './types.js';
import './index-1qIcnbG1.js';

/**
 * Unified Recall X-ray renderer (issue #570, PR 2).
 *
 * Pure functions that format a `RecallXraySnapshot` for human text,
 * GitHub-flavored markdown, and machine JSON consumption.  CLI / HTTP
 * / MCP surfaces all call into this module — they do NOT format X-ray
 * output themselves, so rendering is tested in one place (CLAUDE.md
 * rule 22).
 *
 * Scope for PR 2 (this slice):
 *   - Pure rendering.  No IO, no transport, no capture.
 *   - `renderXray(snapshot, format)` with format ∈
 *     `{"json", "text", "markdown"}`.
 *   - `parseXrayFormat(value)` — input validator that rejects unknown
 *     formats with a listed-options error (CLAUDE.md rule 51).
 *   - Golden-file-style tests in `recall-xray-renderer.test.ts`.
 */

type RecallXrayFormat = "json" | "text" | "markdown";
declare const RECALL_XRAY_FORMATS: readonly RecallXrayFormat[];
/**
 * Validate and coerce a user-provided `--format` / `format` argument to
 * `RecallXrayFormat`.  Unknown values throw an error listing valid
 * options (CLAUDE.md rule 51).  `undefined`/`null` defaults to `"text"`.
 */
declare function parseXrayFormat(value: unknown): RecallXrayFormat;
/**
 * Top-level dispatcher.  CLI / HTTP / MCP callers should always route
 * through this function so the three formats stay in lock-step.
 */
declare function renderXray(snapshot: RecallXraySnapshot | null, format: RecallXrayFormat): string;
/**
 * Deterministic JSON encoding of an X-ray snapshot.  Returns a stable
 * v1 envelope when the snapshot is absent so consumers can pattern-match
 * on `snapshotFound` rather than distinguishing `null` vs `{}`.
 */
declare function renderXrayJson(snapshot: RecallXraySnapshot | null): string;
declare function renderXrayText(snapshot: RecallXraySnapshot | null): string;
declare function renderXrayMarkdown(snapshot: RecallXraySnapshot | null): string;

export { RECALL_XRAY_FORMATS, type RecallXrayFormat, parseXrayFormat, renderXray, renderXrayJson, renderXrayMarkdown, renderXrayText };
