import { LineRange } from "../ranges/lineRange.js";
import { StringEdit, StringReplacement } from "./stringEdit.js";
import { TextReplacement, TextEdit } from "./textEdit.js";
import { AbstractText } from "../text/abstractText.js";
export declare class LineEdit {
    readonly edits: readonly SingleLineEdit[];
    static readonly empty: LineEdit;
    static deserialize(data: SerializedLineEdit): LineEdit;
    static fromEdit(edit: StringEdit, initialValue: AbstractText): LineEdit;
    static fromTextEdit(edit: TextEdit, initialValue: AbstractText): LineEdit;
    static createFromUnsorted(edits: readonly SingleLineEdit[]): LineEdit;
    constructor(edits: readonly SingleLineEdit[]);
    toEdit(initialValue: AbstractText): StringEdit;
    toString(): string;
    serialize(): SerializedLineEdit;
    getNewLineRanges(): LineRange[];
    mapLineNumber(lineNumber: number): number;
    mapLineRange(lineRange: LineRange): LineRange;
    rebase(base: LineEdit): LineEdit;
    humanReadablePatch(originalLines: string[]): string;
    apply(lines: string[]): string[];
    toSingleEdit(): void;
}
export declare class SingleLineEdit {
    readonly lineRange: LineRange;
    readonly newLines: readonly string[];
    static deserialize(e: SerializedSingleLineEdit): SingleLineEdit;
    static fromSingleTextEdit(edit: TextReplacement, initialValue: AbstractText): SingleLineEdit;
    constructor(lineRange: LineRange, newLines: readonly string[]);
    toSingleTextEdit(initialValue: AbstractText): TextReplacement;
    toSingleEdit(initialValue: AbstractText): StringReplacement;
    toString(): string;
    serialize(): SerializedSingleLineEdit;
    removeCommonSuffixPrefixLines(initialValue: AbstractText): SingleLineEdit;
    toLineEdit(): LineEdit;
}
export type SerializedLineEdit = SerializedSingleLineEdit[];
export type SerializedSingleLineEdit = [
    startLineNumber: number,
    endLineNumber: number,
    newLines: readonly string[]
];
