/**
 * `/docs` route mount.
 *
 * - `GET /docs` → server-rendered index of all visible docs, grouped by the
 *   category tree declared in `docs/site/site_doc_manifest.yaml`.
 * - `GET /docs/<slug>` → server-rendered single doc page.
 *
 * Visibility: docs flagged `visibility: internal` (or inherited from
 * `FOLDER_DEFAULTS`) are filtered out unless `NEOTOMA_DOCS_SHOW_INTERNAL=true`
 * or `NODE_ENV !== "production"`.
 *
 * Security:
 *   - Slug allowlist is `[A-Za-z0-9_./-]+`; `..` is rejected; resolved path
 *     must stay strictly under the repo `docs/` root.
 *   - Public read-only route; no auth required. Registered in
 *     `scripts/security/protected_routes_manifest.json` with a stated reason.
 *
 * Determinism: index ordering is a pure function of (category.order →
 * subcategory.order → frontmatter.order → title). No `Date.now()` /
 * `Math.random()`; no wall-clock fallbacks.
 */
import type express from "express";
import { type DocsIndex } from "./index_builder.js";
import type { VisibilityEnv } from "./visibility.js";
export interface DocsRoutesOptions {
    repoRoot?: string;
    /** Override the env source (used in tests). */
    envSource?: VisibilityEnv;
}
/**
 * Build (or fetch from cache) the bundled docs index for the given repo.
 * Exposed for tests and for callers that need the raw `DocsIndex` (e.g. the
 * root landing page navigation builder) without mounting the HTTP routes.
 */
export declare function getBundledDocsIndex(opts: {
    repoRoot: string;
    envSource?: VisibilityEnv;
}): DocsIndex;
export declare function mountDocsRoutes(app: express.Express, opts?: DocsRoutesOptions): void;
//# sourceMappingURL=index.d.ts.map