/**
 * Human-readable commit messages for entity + folder mutations.
 *
 * These strings are display-only — nothing parses them for behavior. Restore
 * keys off the commit hash + the entity from the request, and the audit log
 * only records the string. They surface in `git log`, the audit log, MCP file
 * history, and any future cross-entity history view, where the entity name +
 * type IS the useful context.
 *
 * The per-entity History panel renders its own change summary (computed from
 * the file diff) and does NOT show these messages, so we optimize purely for
 * how they read in a flat log.
 *
 * Format decisions:
 *  - Past tense ("Created", "Edited", "Moved") — it's a log of what happened.
 *  - `"Display Title" (Type)` — the title in quotes, the friendly type in parens.
 *  - Batches enumerate up to 3 names + "(+N more)".
 */
/**
 * Title-case an internal type key for display:
 *   "deal" → "Deal", "meeting_note" → "Meeting Note".
 * Built-in types have no stored label, so this is their friendly name.
 */
export declare function titleCaseType(type: string): string;
export interface EntityRef {
    /** Friendly type label, already resolved (e.g. "Deal"). */
    typeLabel: string;
    /** Display title (frontmatter `name`). Falls back to `id` when absent. */
    title?: string | null;
    /** Slug id — the fallback when there's no title. */
    id: string;
}
/** `"Acme Corp Redesign" (Deal)` */
export declare function entityLabel(ref: EntityRef): string;
export declare const commitMessage: {
    created: (ref: EntityRef) => string;
    edited: (ref: EntityRef) => string;
    editedBatch: (refs: EntityRef[]) => string;
    deleted: (ref: EntityRef) => string;
    deletedBatch: (refs: EntityRef[]) => string;
    /** Rename changes the slug id; the title may be unchanged, so show the ids. */
    renamed: (typeLabel: string, oldId: string, newId: string) => string;
    changedType: (ref: EntityRef, fromLabel: string, toLabel: string) => string;
    /** `folder` is the destination path display, or "(root)" for the repo root. */
    movedTo: (ref: EntityRef, folder: string) => string;
    /** Bulk move: count + destination reads cleaner than enumerate + target. */
    movedBatch: (count: number, where: string) => string;
    receivedBatch: (count: number, fromRepo: string) => string;
    restored: (ref: EntityRef, shortHash: string) => string;
    relinked: (oldId: string, newId: string) => string;
    folderCreated: (path: string) => string;
    folderRenamed: (from: string, to: string) => string;
    folderDisplayRenamed: (path: string) => string;
    folderDeleted: (path: string) => string;
    folderMoved: (from: string, toRepo: string, to: string) => string;
    folderReceived: (fromRepo: string, from: string, to: string) => string;
};
