import { FrontmatterError } from './frontmatter.js';
import type { Frontmatter, Page, PageType } from './types.js';
/**
 * 读单页。文件不存在返 null。frontmatter 损坏抛 FrontmatterError。
 */
export declare function readPage(filePath: string): Page | null;
/**
 * 读单页（宽松版本）：损坏不抛，返 ParseFailure 标记。
 * 用于 list 扫描时一页坏不阻塞整体。
 */
export type ReadResult = {
    ok: true;
    page: Page;
} | {
    ok: false;
    filePath: string;
    error: FrontmatterError;
};
export declare function tryReadPage(filePath: string): ReadResult | null;
/**
 * 写一页。父目录不存在自动建。frontmatter 写前 zod 校验（serializeFrontmatter 内部
 * 假设已校验，这里通过 page.frontmatter 的类型推断保证）。
 *
 * - 已存在：覆盖
 * - 不存在：创建
 *
 * 返回写入的最终 filePath（绝对路径）。
 */
export declare function writePage(repoDir: string, type: PageType, title: string, frontmatter: Frontmatter, body: string): string;
/**
 * 删除一页。文件不存在 = no-op。
 */
export declare function deletePage(repoDir: string, type: PageType, title: string): boolean;
export interface ListOptions {
    /** 限定类型（默认全部 5 类） */
    readonly types?: readonly PageType[];
    /** 是否包含损坏的页（带 ok=false 的 entry）；默认 false（只返成功的） */
    readonly includeFailures?: boolean;
}
/**
 * 列出指定项目下所有 wiki page。
 *
 * 类型 dir 不存在 → 跳过（不算错误，project 可能没创建那种类型）。
 * 单页损坏 → 默认跳过；includeFailures=true 时保留。
 */
export declare function listPages(repoDir: string, opts?: ListOptions): ReadResult[];
/**
 * 仅返成功读取的页。语法糖（list 90% 场景）。
 */
export declare function listValidPages(repoDir: string, opts?: ListOptions): Page[];
/**
 * 按 pageId（如 "modules/PipelineService"）查找 page。
 * 自动从 id 拆出 type 和 title。
 */
export declare function getPageById(repoDir: string, pageId: string): Page | null;
/**
 * 按 wikilink "[[Page Name]]" 查找 page。会扫所有 type 直到找到第一个 title 匹配。
 * 用于解析 frontmatter related 字段或 body 里的 wikilink。
 *
 * Wikilink 可以带 type 前缀 "[[modules/PipelineService]]" —— 这种走 getPageById。
 */
export declare function findPageByWikilink(repoDir: string, wikilink: string): Page | null;
/**
 * 给定文件绝对路径，反推 pageId（type + title）。
 * 无效路径返 null。
 */
export declare function resolvePageId(repoDir: string, filePath: string): {
    type: PageType;
    title: string;
    pageId: string;
} | null;
//# sourceMappingURL=page.d.ts.map