/** * Real line numbers for squeezed content. * * A squeezed read is unusable for anything that needs a location: the model cannot cite * `file.ts:120`, and a follow-up edit has to re-read the file to find out where the code * actually lives — paying for the file twice and cancelling out the squeeze. * * Numbering the squeezed output sequentially would be worse than nothing: the numbers would * be confidently wrong. So we map each surviving line back to the line it came from in the * original file. * * This is exact rather than heuristic because of what `squeezeCode` actually does: it only * *drops* whole lines (comments, imports, blanks) and normalizes whitespace *within* a line. * It never reorders, merges or splits them. So a forward-only greedy walk over the original * finds each squeezed line at its true position. */ /** * For each line of `squeezed`, the 1-indexed line in `original` it came from, or null when * the line has no origin (a squeezer marker, or content that could not be located). */ export declare function mapSqueezedToOriginal(original: string, squeezed: string): Array; /** * Render text with a line-number gutter. `numbers` is parallel to the lines of `text`; * a null entry renders a blank gutter so an inserted marker never claims a position. */ export declare function withLineNumbers(text: string, numbers: Array): string; /** Straight 1..n numbering, for content that was not squeezed. */ export declare function sequentialNumbers(text: string, startLine?: number): Array; //# sourceMappingURL=LineNumberMap.d.ts.map