export interface HistoryFieldChange {
    key: string;
    op: 'add' | 'remove' | 'change';
    /** Present only for top-level scalar changes; absent for nested/array deltas. */
    from?: unknown;
    to?: unknown;
}
/** Approximate word-level magnitude of a body edit (multiset diff, hence ~). */
export interface HistoryBodyChange {
    wordsAdded: number;
    wordsRemoved: number;
}
export interface HistoryCommitChange {
    /** No parent version of the file — this commit created the entry. */
    created: boolean;
    /** Frontmatter field deltas (bookkeeping keys filtered out). */
    fields: HistoryFieldChange[];
    /** Body magnitude when the markdown body changed; null when it didn't. */
    body: HistoryBodyChange | null;
}
/**
 * Parse a markdown doc's YAML frontmatter directly, with no cache. Use this for
 * HISTORICAL git content: gray-matter's shared MarkdownService.parseContent has
 * a module-level cache that returned a stale entity_type for past-commit content
 * in this codebase. js-yaml is a pure parse. Returns {} when there's no
 * frontmatter or it doesn't parse.
 */
export declare function parseFrontmatterCacheFree(raw: string): Record<string, unknown>;
/**
 * Compute the change summary between a parent and current version of one
 * entity file. `parentRaw === null` means the file didn't exist at the parent
 * commit (created here, or — under the no-`--follow` limitation — renamed into
 * this path).
 */
export declare function computeChange(currentRaw: string, parentRaw: string | null): HistoryCommitChange;
