import { Event } from "../../../../base/common/event.js";
import { IPosition } from "../../core/position.js";
import { Range } from "../../core/range.js";
import { IWordAtPosition } from "../../core/wordHelper.js";
import { StandardTokenType } from "../../encodedTokenAttributes.js";
import { ILanguageService } from "../../languages/language.service.js";
import { LanguageConfigurationServiceChangeEvent } from "../../languages/languageConfigurationRegistry.js";
import { ILanguageConfigurationService } from "../../languages/languageConfigurationRegistry.service.js";
import { BracketPairsTextModelPart } from "../bracketPairsTextModelPart/bracketPairsImpl.js";
import { TextModel } from "../textModel.js";
import { TextModelPart } from "../textModelPart.js";
import { AbstractSyntaxTokenBackend, AttachedViews } from "./abstractSyntaxTokenBackend.js";
import { IModelContentChangedEvent, IModelLanguageChangedEvent, IModelLanguageConfigurationChangedEvent, IModelTokensChangedEvent } from "../../textModelEvents.js";
import { ITokenizationTextModelPart } from "../../tokenizationTextModelPart.js";
import { LineTokens } from "../../tokens/lineTokens.js";
import { SparseMultilineTokens } from "../../tokens/sparseMultilineTokens.js";
import { IInstantiationService } from "../../../../platform/instantiation/common/instantiation.js";
import { ITreeSitterLibraryService } from "../../services/treeSitter/treeSitterLibraryService.service.js";
import { IObservable } from "../../../../base/common/observable.js";
export declare class TokenizationTextModelPart extends TextModelPart implements ITokenizationTextModelPart {
    private readonly _textModel;
    private readonly _bracketPairsTextModelPart;
    private _languageId;
    private readonly _attachedViews;
    private readonly _languageService;
    private readonly _languageConfigurationService;
    private readonly _instantiationService;
    private readonly _treeSitterLibraryService;
    private readonly _semanticTokens;
    private readonly _onDidChangeLanguage;
    readonly onDidChangeLanguage: Event<IModelLanguageChangedEvent>;
    private readonly _onDidChangeLanguageConfiguration;
    readonly onDidChangeLanguageConfiguration: Event<IModelLanguageConfigurationChangedEvent>;
    private readonly _onDidChangeTokens;
    readonly onDidChangeTokens: Event<IModelTokensChangedEvent>;
    readonly tokens: IObservable<AbstractSyntaxTokenBackend>;
    private readonly _useTreeSitter;
    private readonly _languageIdObs;
    constructor(_textModel: TextModel, _bracketPairsTextModelPart: BracketPairsTextModelPart, _languageId: string, _attachedViews: AttachedViews, _languageService: ILanguageService, _languageConfigurationService: ILanguageConfigurationService, _instantiationService: IInstantiationService, _treeSitterLibraryService: ITreeSitterLibraryService);
    _hasListeners(): boolean;
    handleLanguageConfigurationServiceChange(e: LanguageConfigurationServiceChangeEvent): void;
    handleDidChangeContent(e: IModelContentChangedEvent): void;
    handleDidChangeAttached(): void;
    getLineTokens(lineNumber: number): LineTokens;
    private _emitModelTokensChangedEvent;
    private validateLineNumber;
    get hasTokens(): boolean;
    resetTokenization(): void;
    get backgroundTokenizationState(): import("../../tokenizationTextModelPart.js").BackgroundTokenizationState;
    forceTokenization(lineNumber: number): void;
    hasAccurateTokensForLine(lineNumber: number): boolean;
    isCheapToTokenize(lineNumber: number): boolean;
    tokenizeIfCheap(lineNumber: number): void;
    getTokenTypeIfInsertingCharacter(lineNumber: number, column: number, character: string): StandardTokenType;
    tokenizeLinesAt(lineNumber: number, lines: string[]): LineTokens[] | null;
    setSemanticTokens(tokens: SparseMultilineTokens[] | null, isComplete: boolean): void;
    hasCompleteSemanticTokens(): boolean;
    hasSomeSemanticTokens(): boolean;
    setPartialSemanticTokens(range: Range, tokens: SparseMultilineTokens[]): void;
    getWordAtPosition(_position: IPosition): IWordAtPosition | null;
    private getLanguageConfiguration;
    private static _findLanguageBoundaries;
    getWordUntilPosition(position: IPosition): IWordAtPosition;
    getLanguageId(): string;
    getLanguageIdAtPosition(lineNumber: number, column: number): string;
    setLanguageId(languageId: string, source?: string): void;
}
