import type { DiffSnippet } from "../types/index.js"; /** * Извлекает из unified diff тот фрагмент, который содержит указанную строку из HEAD. * * CHANGE: Refactored to reduce complexity and line count * WHY: Original function had 77 lines and complexity 14 * QUOTE(LINT): "Function has too many lines/complexity" * REF: ESLint max-lines-per-function, complexity * SOURCE: n/a * * @param unifiedDiff Полный unified diff в текстовом виде * @param targetLine Целевая линия в HEAD (1-based) * @returns Фрагмент diff или null, если строка не менялась * * @invariant targetLine > 0 * * @example * ```ts * const diff = `@@ -1,3 +1,3 @@ * line1 * -line2 * +line2 modified * line3`; * const snippet = extractDiffSnippet(diff, 2); * // Returns snippet with pointerIndex pointing to "line2 modified" * @pure true * @invariant result === null || result.pointerIndex >= 0 * @complexity O(n) где n = количество строк в diff */ export declare function extractDiffSnippet(unifiedDiff: string, targetLine: number): DiffSnippet | null; /** * Находит первый фрагмент diff из списка кандидатов, содержащий указанную строку HEAD. * * @param candidates Список текстов unified diff * @param targetLine Номер строки в HEAD (1-based) * @returns Пара { snippet, index } либо null, если строка не затронута * * @invariant targetLine > 0 * * @example * ```ts * const diffs = [diffFromUpstream, diffFromWorkspace, diffFromIndex]; * const result = pickSnippetForLine(diffs, 42); * if (result) { * console.log(`Found in diff #${result.index}`); * } * @pure true * @invariant result === null || result.index >= 0 * @complexity O(m*n) где m = количество кандидатов, n = количество строк в каждом diff */ export declare function pickSnippetForLine(candidates: readonly string[], targetLine: number): { readonly snippet: DiffSnippet; readonly index: number; } | null; //# sourceMappingURL=parser.d.ts.map