import { LineTokens } from "../tokens/lineTokens.js"; import { Position } from "../core/position.js"; import { IRange } from "../core/range.js"; import { EndOfLinePreference, PositionAffinity } from "../model.js"; import { InjectedText, ModelLineProjectionData } from "../modelLineProjectionData.js"; import { ViewLineData } from "../viewModel.js"; export interface IModelLineProjection { isVisible(): boolean; /** * This invalidates the current instance (potentially reuses and returns it again). */ setVisible(isVisible: boolean): IModelLineProjection; getProjectionData(): ModelLineProjectionData | null; getViewLineCount(): number; getViewLineContent(model: ISimpleModel, modelLineNumber: number, outputLineIndex: number): string; getViewLineLength(model: ISimpleModel, modelLineNumber: number, outputLineIndex: number): number; getViewLineMinColumn(model: ISimpleModel, modelLineNumber: number, outputLineIndex: number): number; getViewLineMaxColumn(model: ISimpleModel, modelLineNumber: number, outputLineIndex: number): number; getViewLineData(model: ISimpleModel, modelLineNumber: number, outputLineIndex: number, baseViewLineNumber: number): ViewLineData; getViewLinesData(model: ISimpleModel, modelLineNumber: number, outputLineIdx: number, lineCount: number, baseViewLineNumber: number, globalStartIndex: number, needed: boolean[], result: Array): void; getModelColumnOfViewPosition(outputLineIndex: number, outputColumn: number): number; getViewPositionOfModelPosition(deltaLineNumber: number, inputColumn: number, affinity?: PositionAffinity): Position; getViewLineNumberOfModelPosition(deltaLineNumber: number, inputColumn: number): number; normalizePosition(outputLineIndex: number, outputPosition: Position, affinity: PositionAffinity): Position; getInjectedTextAt(outputLineIndex: number, column: number): InjectedText | null; } export interface ISimpleModel { tokenization: { getLineTokens(lineNumber: number): LineTokens; }; getLineContent(lineNumber: number): string; getLineLength(lineNumber: number): number; getLineMinColumn(lineNumber: number): number; getLineMaxColumn(lineNumber: number): number; getValueInRange(range: IRange, eol?: EndOfLinePreference): string; } export declare function createModelLineProjection(lineBreakData: ModelLineProjectionData | null, isVisible: boolean): IModelLineProjection;