/** * GitWand v2.6 — Pipeline RefMerge (expérimental) * * Orchestre la détection, inversion, merge textuel et rejeu des refactorings * pour résoudre des conflits causés par des renommages concurrents. * * ## Pipeline complet * * ``` * input (base, ours, theirs) * ↓ * detectRefactorings(base, ours) → oursRefs * detectRefactorings(base, theirs) → theirsRefs * ↓ * si quota dépassé → abort (renvoyer null — trop risqué) * ↓ * ours' = invertRefactorings(ours, oursRefs) * theirs' = invertRefactorings(theirs, theirsRefs) * ↓ * merge textuel sur (base, ours', theirs') → merged' * ↓ * si merge textuel échoue → abort (renvoyer null) * ↓ * merged = replayRefactorings(merged', mergeRefactorings(oursRefs, theirsRefs)) * ↓ * return { lines: merged, oursRefs, theirsRefs } * ``` * * ## Garanties * - Retourne `null` si aucun refactoring détecté ou si le pipeline échoue. * - Retourne `null` en cas d'erreur (never throws — safe by default). * - Zéro import Node.js — compatible browser, Node.js, Tauri WebView. */ import type { ClassifyInput, Refactoring } from "../types.js"; /** Résultat du pipeline RefMerge pour un hunk. */ export interface RefMergeResult { /** Lignes résolues après inversion + merge + rejeu. `null` si le pipeline a échoué. */ lines: string[] | null; /** Raison de la résolution ou de l'échec. */ reason: string; /** Refactorings détectés sur la branche ours (peut être vide). */ oursRefs: Refactoring[]; /** Refactorings détectés sur la branche theirs (peut être vide). */ theirsRefs: Refactoring[]; } /** * Tente de résoudre un hunk via le pipeline RefMerge. * * @param input - Hunk d'entrée (oursLines, baseLines, theirsLines) * @param maxRefactorings - Nombre maximum de refactorings autorisés par branche * @returns Résultat du pipeline, ou `{ lines: null, ... }` si le pipeline échoue * * @example * ```ts * const result = tryRefMerge( * { oursLines: [...], baseLines: [...], theirsLines: [...], startLine: 1, endLine: 10 }, * 10, * ); * if (result.lines !== null) { * // La résolution RefMerge a réussi * } * ``` */ export declare function tryRefMerge(input: ClassifyInput, maxRefactorings?: number): RefMergeResult; //# sourceMappingURL=orchestration.d.ts.map