/** * Where shaped lines came from: each line of a shaped (or scored) text matched to the line of the original it is, * so per-line scores and the kept/hidden split can be reported over the original's own lines. */ /** Each distinct line of `base` and its indexes, ascending. */ export declare function lineIndex(base: readonly string[]): Map; /** * The first index at or after `from` of the `base` line that `line` is: equal to it, or capped from it. -1 for none. * `index` is {@link lineIndex} of `base`. */ export declare function matchLine(base: readonly string[], index: Map, line: string, from: number): number; /** * The index in `base` of each of `lines`, matched in order (each match after the previous one), or null for a line * that is none of them (a marker, a note, a rewritten line). Shaping only drops and replaces runs of lines, so the * nearest equal line after the last match is the one a kept line was copied from. */ export declare function alignLines(base: readonly string[], lines: readonly string[], index?: Map): (number | null)[];