/**
 * @module        core/wiki/reader
 * @description   wikiRead()：5 层确定性检索 + 类型优先级 + token 预算
 *
 * @layer         core
 *
 * doc-28 §10 Wiki 读取原则的代码实现。**这是 Worker prompt 注入的入口**。
 *
 * 5 层叠加：
 *   L1 永远 — hot.md 全文                           ~500 字
 *   L2 永远 — index.md 节选 top-N 行                ~500 字
 *   L3 优先 — pinned wiki_pages（card frontmatter）  ~50×N 字
 *   L4 按 skill — 卡 skills ∩ 页 tags → top-3        ~50×3 字
 *   L5 按关键词 — BM25(card.title + card.desc)→top-3 ~50×3 字
 *
 * 优先级排序（命中多页）：
 *   lesson = 3 / decision = 3 / concept = 2 / module = 1 / source = 1
 *   stale page → 跳过（status=stale 或 mtime 太老）
 *
 * Token 预算硬上限 1500 字（~2000 token），超出砍 L5 keyword 命中。
 *
 * 设计原则（Karpathy）：
 *   - **确定性**——同输入同输出，纯函数（除文件 I/O）
 *   - **Push 而非 Pull**——Worker 不需要学怎么查，结果已经摆好
 *   - **TL;DR 而非全文**——让 Worker 自己决定要不要 Read 完整 page
 */
import type { PageType } from './types.js';
export interface ReadInput {
    /** Repo 根目录（用于查 wiki/） */
    readonly repoDir: string;
    /** 当前卡片 title + description（用作 BM25 查询） */
    readonly cardTitle: string;
    readonly cardDesc: string;
    /** 卡 frontmatter 的 skills（用作 tag 匹配） */
    readonly cardSkills: readonly string[];
    /** 卡 labels（暂未用，预留扩展） */
    readonly cardLabels?: readonly string[];
    /** 卡 frontmatter wiki_pages 显式 pin 的 page ids */
    readonly pinnedPages?: readonly string[];
}
export interface PageContextEntry {
    readonly pageId: string;
    readonly title: string;
    readonly type: PageType;
    readonly tldr: string;
    /** 命中来源——用于 prompt 渲染时分组显示 */
    readonly source: 'pinned' | 'skill' | 'keyword';
    /** 内部排序权重（debug） */
    readonly priority: number;
}
export interface WikiContext {
    /** L1: hot.md 全文 */
    readonly hot: string;
    /** L2: index.md 节选 top-N 行 */
    readonly indexSummary: string;
    /** L3+L4+L5 合并去重 + 预算后的 page 列表 */
    readonly pages: readonly PageContextEntry[];
    /** 可观察性：本次注入的 token 预估 */
    readonly tokensEstimate: number;
}
export interface ReadOptions {
    /** Layer 2 节选行数（默认 30） */
    readonly indexLines?: number;
    /** Layer 4 skill 命中 top-N（默认 3） */
    readonly skillTopN?: number;
    /** Layer 5 keyword 命中 top-N（默认 3） */
    readonly keywordTopN?: number;
    /** Token 预算硬上限（默认 2000） */
    readonly budgetTokens?: number;
}
/**
 * 读取 wiki 注入到 Worker prompt 的上下文。
 *
 * 步骤：
 *   1. Layer 1: hot.md 全文
 *   2. Layer 2: index.md 节选
 *   3. Layer 3: pinned pages（按 id 取）
 *   4. 列所有 page 建临时 searcher
 *   5. Layer 4: skill 匹配
 *   6. Layer 5: BM25 关键词
 *   7. 合并去重 → 类型优先级排序 → 预算截断
 *   8. 装载 TL;DR 入 PageContextEntry
 *
 * 失败模式：任何 layer 失败（文件丢/解析错）单独 swallow，不阻塞其他 layer。
 */
export declare function wikiRead(input: ReadInput, opts?: ReadOptions): WikiContext;
/**
 * WikiContext → prompt 注入 markdown。
 *
 * 格式（doc-28 §10）：
 *   # 项目知识 - 当前状态
 *   <hot.md 全文>
 *   ---
 *   # 知识地图（节选）
 *   <index summary>
 *   ---
 *   # 与本任务相关的页
 *   ## [[id]] (type) [via source]
 *   TL;DR: ...
 */
export declare function formatWikiContext(ctx: WikiContext): string;
//# sourceMappingURL=reader.d.ts.map