/** Format the required-shape diagnostic shown when a line reference is malformed. */
export declare function formatFullAnchorRequirement(raw?: string): string;
/** Parse a decorated bare line-number anchor like `42`, `*42:foo`, ` > 7`. */
export declare function parseTag(ref: string): {
    line: number;
};
export interface MismatchDetails {
    path?: string;
    expectedFileHash: string;
    actualFileHash: string;
    fileLines: string[];
    anchorLines?: readonly number[];
    /**
     * `true` when the section's expected hash resolved to a recorded snapshot
     * (file content drifted since that snapshot), `false` when no snapshot
     * was ever recorded for the hash (likely fabricated or carried over from
     * a prior session). Drives a more actionable rejection message; defaults
     * to `true` for backward compatibility with direct callers.
     */
    hashRecognized?: boolean;
}
/**
 * Raised when a hashline section's snapshot tag doesn't match the live file's
 * content (and recovery, if configured, declined the merge). Carries the
 * file lines plus anchored lines so renderers can produce a richer
 * diagnostic via {@link MismatchError.displayMessage}.
 */
export declare class MismatchError extends Error {
    readonly path: string | undefined;
    readonly expectedFileHash: string;
    readonly actualFileHash: string;
    readonly fileLines: string[];
    readonly anchorLines: readonly number[];
    readonly hashRecognized: boolean;
    constructor(details: MismatchDetails);
    get displayMessage(): string;
    static rejectionHeader(details: MismatchDetails): string[];
    static formatDisplayMessage(details: MismatchDetails): string;
    static formatMessage(details: MismatchDetails): string;
}
/** Throws when the line reference is out of bounds for the given file. */
export declare function validateLineRef(ref: {
    line: number;
}, fileLines: string[]): void;
//# sourceMappingURL=mismatch.d.ts.map