/**
 * Read-only hashline diff preview helpers used by the streaming edit
 * renderer. Reads the target file, parses + applies the section's edits in
 * memory (no FS write, no LSP writethrough), then hands the before/after
 * pair to {@link generateDiffString} so the renderer can show the diff
 * while the tool call is still streaming.
 *
 * Uses the same snapshot-tag semantics as the apply path: a live content-hash
 * match is accepted even when the tag was minted by a source that did not keep
 * history, and stale tags recover through the session snapshot store when possible.
 */
import { type PatchSection, type SnapshotStore } from "@pk-nerdsaver-ai/hashline";
export interface HashlineDiffOptions {
    /**
     * Use the streaming-tolerant applier ({@link PatchSection.applyPartialTo})
     * so trailing in-flight ops do not throw or emit phantom edits. Streaming
     * preview path only.
     */
    streaming?: boolean;
    /**
     * Skip snapshot-tag validation. Streaming previews use this so transient
     * stale/missing tags do not flash re-read errors while the model is still
     * authoring input; the final apply path still validates through Patcher.
     */
    skipHashValidation?: boolean;
}
export declare function computeHashlineSectionDiff(section: PatchSection, cwd: string, snapshots: SnapshotStore, options?: HashlineDiffOptions): Promise<{
    diff: string;
    firstChangedLine: number | undefined;
} | {
    error: string;
}>;
export declare function computeHashlineDiff(input: {
    input: string;
}, cwd: string, snapshots: SnapshotStore, options?: HashlineDiffOptions): Promise<{
    diff: string;
    firstChangedLine: number | undefined;
} | {
    error: string;
}>;
