/** * GitWand — Helpers partagés au-dessus du backend diff * * `computeDiff`, `extractEdits`, `editsOverlap`, `mergeNonOverlapping` n'appartiennent * pas à un algorithme particulier — ce sont des opérations *sur* le résultat d'un * LCS. On les isole de l'implémentation pour pouvoir échanger librement le backend * (`lcsLegacy` ↔ `histogramDiff`) sans toucher cette couche. */ /** Une opération de diff sur une ligne */ export interface DiffOp { type: "keep" | "add" | "remove"; line: string; /** Index dans le tableau source (base pour keep/remove, branch pour add) */ index: number; } /** * Calcule le diff entre une base et une branche. * Retourne la séquence d'opérations (keep, add, remove). * * Utilise le backend `lcs()` du module index (Histogram par défaut depuis v2.1, * `lcsLegacy` si `GITWAND_DIFF=lcs`). */ export declare function computeDiff(base: string[], branch: string[]): DiffOp[]; /** * Représente un changement (edit) d'une branche par rapport à la base. * start/end sont les indices dans la base où le changement s'applique. */ export interface Edit { /** Index de début dans la base (inclus) — position avant laquelle insérer ou début de la zone supprimée */ baseStart: number; /** Index de fin dans la base (exclus) — fin de la zone supprimée */ baseEnd: number; /** Lignes ajoutées à cette position */ addedLines: string[]; /** Source : "ours" ou "theirs" */ source: "ours" | "theirs"; } /** * Extrait les edits (changements groupés) d'un diff. * Chaque groupe contigu de add/remove forme un edit. */ export declare function extractEdits(diff: DiffOp[], source: "ours" | "theirs"): Edit[]; /** * Vérifie si deux edits se chevauchent (overlap). * Deux edits overlap si leurs zones dans la base se croisent. */ export declare function editsOverlap(a: Edit, b: Edit): boolean; /** * Tente de fusionner les changements non-overlapping de deux branches. * * @returns Les lignes fusionnées, ou null si les changements se chevauchent */ export declare function mergeNonOverlapping(base: string[], ours: string[], theirs: string[]): string[] | null; //# sourceMappingURL=shared.d.ts.map