/**
 * Per-file change list formatting helpers.
 *
 * Used by the upload flow to display skill/subagent collision `fileChanges`
 * (path-level added/modified/removed entries) in clack notes and in the
 * "Use Existing" discard-count hint.
 */
import type { FileChange } from "../../../api/registrar.js";
/**
 * Render a flat, uncolored per-file change list for display in a clack note.
 *
 * One line per file, sorted by path (ASCII). Each line contains the path, the
 * status word, and a `(binary)` marker for binary files. The `existingContent`
 * field is never rendered; callers only see the path-level summary.
 *
 * @param args - The function arguments
 * @param args.fileChanges - Per-file change entries from the collision payload
 *
 * @returns Multi-line string, or empty string if the list is empty
 */
export declare const formatFileChangesForNote: (args: {
    fileChanges: ReadonlyArray<FileChange>;
}) => string;
/**
 * Build the "Use Existing" discard-clause hint. When `count` is > 0 the clause
 * is pluralized against the count; otherwise falls back to generic messaging
 * used for older registrars that did not return `fileChanges`.
 *
 * @param args - The function arguments
 * @param args.count - Number of file changes that would be discarded
 *
 * @returns Discard hint string
 */
export declare const formatDiscardHint: (args: {
    count: number;
}) => string;
/**
 * Count the number of entries in an optional fileChanges list.
 *
 * Returns 0 when the list is null, undefined, or empty. Used to pluralize the
 * "Use Existing" discard-count hint and to decide whether to render a note.
 *
 * @param args - The function arguments
 * @param args.fileChanges - Optional per-file change entries
 *
 * @returns The number of changed files (0 when absent or empty)
 */
export declare const countFileChanges: (args: {
    fileChanges?: ReadonlyArray<FileChange> | null;
}) => number;
/**
 * Produce a compact tally string grouped by status for non-interactive output.
 *
 * Example: `"2 added, 1 modified, 1 removed"`. Status groups with zero count
 * are omitted. Returns empty string when there are no changes.
 *
 * @param args - The function arguments
 * @param args.fileChanges - Optional per-file change entries
 *
 * @returns A tally string, or empty string when list is empty/missing
 */
export declare const summarizeFileChangeCounts: (args: {
    fileChanges?: ReadonlyArray<FileChange> | null;
}) => string;
//# sourceMappingURL=fileChangesFormat.d.ts.map