/**
 * docs/nav-renderer.mjs — deterministic generator for
 * `docs/product/README.md` (C49 D-07).
 *
 * Shape we emit, mirroring `.aperant/features/REGISTRY.md` conventions:
 *
 *   # Product Documentation
 *
 *   Last generated: {timestamp}
 *   Features registry last scanned: {registry_last_scanned}
 *
 *   ## Coverage
 *
 *   {coverage-summary table — areas, features documented, stubs, omitted}
 *
 *   ## By Persona
 *
 *   {tier-grouped TOC — primary → secondary → tertiary}
 *
 *   ## By Feature Area
 *
 *   {flat TOC of _shared/<area>/<feature>.md for at-a-glance discovery}
 *
 * No LLM calls. No I/O (caller writes the returned string via
 * atomicWriteText). Pure function — same plan in, same markdown out, so
 * hash-stable regeneration works.
 */
/**
 * @typedef {import('./structure-planner.mjs').StructurePlan} StructurePlan
 * @typedef {import('./structure-planner.mjs').PlannedPersona} PlannedPersona
 */
/**
 * Build the README.md content.
 *
 * @param {Object} inputs
 * @param {StructurePlan} inputs.plan
 * @param {string} [inputs.generatedAt]           ISO timestamp; default = new Date().toISOString()
 * @param {string | null} [inputs.registryLastScanned]   Copied verbatim from
 *                                                       `REGISTRY.md`'s "Last scanned:" line when present.
 * @param {string} [inputs.productName]           Product name for the H1. Defaults to "Product Documentation".
 * @returns {string}
 */
export function renderNavIndex({ plan, generatedAt, registryLastScanned, productName, }: {
    plan: StructurePlan;
    generatedAt?: string | undefined;
    registryLastScanned?: string | null | undefined;
    productName?: string | undefined;
}): string;
export type StructurePlan = import("./structure-planner.mjs").StructurePlan;
export type PlannedPersona = import("./structure-planner.mjs").PlannedPersona;
//# sourceMappingURL=nav-renderer.d.mts.map