import type { SyntaxDiagnostic } from "../parse-diagnostics.js"; import type { PartSpan } from "../ir/part-span.js"; import type { Span } from "../symbols/symbols.js"; import type { Token } from "../token/token.js"; /** Shift a cell-relative diagnostic to document coordinates. `line` is 1-based, `column` 0-based. */ export declare function shiftDiagnostic(d: SyntaxDiagnostic, baseLine: number, baseCol: number, baseOffset?: number): SyntaxDiagnostic; /** Shift a cell-relative token to document coordinates. `line` is 1-based, `column` 0-based. */ export declare function shiftToken(t: Token, baseLine: number, baseCol: number, baseOffset: number): Token; /** Shift a whole diagnostic list; a zero base returns the input array unchanged (the first cell). */ export declare function shiftDiagnostics(diags: readonly SyntaxDiagnostic[], baseLine: number, baseCol: number, baseOffset: number): readonly SyntaxDiagnostic[]; /** A span in the `{ line, column, endLine, endColumn }` shape shared by symbols `Span` and qualify * `Diagnostic` (1-based line, 0-based column). Shift both its start and end into doc coordinates, * preserving every other field (a Diagnostic's `kind`/`message`, a Sym's other members). A start/end * on the cell's FIRST line (line === 1) offsets by baseCol; a later line only shifts its line. */ export declare function shiftSpanFields(v: T, baseLine: number, baseCol: number): T; /** Shift a per-part source span (start/end are 0-based char offsets; line 1-based, column 0-based). */ export declare function shiftPartSpan(p: PartSpan, baseLine: number, baseCol: number, baseOffset: number): PartSpan; /** Shift a symbols `Span` (line/column/endLine/endColumn PLUS absolute start/end char offsets) to * document coordinates. `shiftSpanFields` alone only shifts the line/column half — its `{...v}` * spread would otherwise leave `start`/`end` at their stale cell-relative values, so a `Span` * (unlike a `Diagnostic`, which has no start/end) always goes through this composed shift instead. */ export declare function shiftSpan(s: Span, baseLine: number, baseCol: number, baseOffset: number): Span; /** Shift a whole token list; a zero base returns the input array unchanged (the first cell). */ export declare function shiftTokens(tokens: readonly Token[], baseLine: number, baseCol: number, baseOffset: number): readonly Token[];