import { Parser } from '@vscode/tree-sitter-wasm'; import { Event } from '../../../base/common/event.js'; import { ITextModel } from '../model.js'; import { Range } from '../core/range.js'; export declare const ITreeSitterParserService: import("../../../platform/instantiation/common/instantiation.js").ServiceIdentifier; export interface RangeChange { newRange: Range; oldRangeLength: number; newRangeStartOffset: number; newRangeEndOffset: number; } export interface TreeUpdateEvent { textModel: ITextModel; ranges: RangeChange[]; versionId: number; } export interface ITreeSitterParserService { readonly _serviceBrand: undefined; onDidAddLanguage: Event<{ id: string; language: Parser.Language; }>; getOrInitLanguage(languageId: string): Parser.Language | undefined; getParseResult(textModel: ITextModel): ITreeSitterParseResult | undefined; getTree(content: string, languageId: string): Promise; onDidUpdateTree: Event; /** * For testing purposes so that the time to parse can be measured. */ getTextModelTreeSitter(model: ITextModel, parseImmediately?: boolean): Promise; } export interface ITreeSitterParseResult { readonly tree: Parser.Tree | undefined; readonly language: Parser.Language; versionId: number; } export interface ITextModelTreeSitter { /** * For testing purposes so that the time to parse can be measured. */ parse(languageId?: string): Promise; dispose(): void; }