import { IRPCProtocol } from '@opensumi/ide-connection';
import { IReporterService, PreferenceService } from '@opensumi/ide-core-browser';
import { IMarkerData, MarkerManager } from '@opensumi/ide-core-common';
import { IEvaluatableExpressionService } from '@opensumi/ide-debug/lib/browser/editor/evaluatable-expression';
import { ILanguageStatus, LanguageSelector } from '@opensumi/ide-editor/lib/browser';
import * as monaco from '@opensumi/ide-monaco';
import { ICallHierarchyService } from '@opensumi/ide-monaco/lib/browser/contrib/callHierarchy';
import { ITypeHierarchyService } from '@opensumi/ide-monaco/lib/browser/contrib/typeHierarchy';
import * as modes from '@opensumi/monaco-editor-core/esm/vs/editor/common/languages';
import { ICodeActionProviderMetadataDto, IMainThreadLanguages, MonacoModelIdentifier } from '../../../common/vscode';
import { IDocumentFilterDto } from '../../../common/vscode/converter';
import { UriComponents } from '../../../common/vscode/ext-types';
import { ExtensionIdentifier, IExtensionDescription } from '../../../common/vscode/extension';
import { CallHierarchyItem, FoldingRangeProvider, ILink, ISerializedSignatureHelpProviderMetadata, SemanticTokensLegend, SerializedDocumentFilter, SerializedLanguageConfiguration, WorkspaceSymbolProvider } from '../../../common/vscode/model.api';
import type { ITextModel } from '@opensumi/monaco-editor-core/esm/vs/editor/common/model';
export declare class MainThreadLanguages implements IMainThreadLanguages {
    private rpcProtocol;
    private readonly proxy;
    private readonly disposables;
    readonly markerManager: MarkerManager;
    preference: PreferenceService;
    reporter: IReporterService;
    private readonly languageService;
    protected readonly callHierarchyService: ICallHierarchyService;
    protected readonly typeHierarchyService: ITypeHierarchyService;
    protected readonly evaluatableExpressionService: IEvaluatableExpressionService;
    private readonly documentModelManager;
    private readonly languageStatusService;
    private textmateService;
    private languageFeatureEnabled;
    private _reviveCodeActionDto;
    constructor(rpcProtocol: IRPCProtocol);
    dispose(): void;
    $unregister(handle: any): void;
    $getLanguages(): string[];
    $changeLanguage(resource: UriComponents, languageId: string): Promise<void>;
    isLanguageFeatureEnabled(model: ITextModel): boolean | undefined;
    protected getUniqueLanguages(): string[];
    $registerHoverProvider(handle: number, selector: SerializedDocumentFilter[]): void;
    protected createHoverProvider(handle: number, selector?: LanguageSelector): modes.HoverProvider;
    private isDeflatedSuggestDto;
    private inflateLabel;
    private inflateSuggestDto;
    $registerCompletionSupport(handle: number, selector: SerializedDocumentFilter[], triggerCharacters: string[], supportsResolveDetails: boolean): void;
    $registerInlineCompletionsSupport(handle: number, selector: IDocumentFilterDto[], supportsHandleEvents: boolean, extensionId: string, yieldsToExtensionIds: string[]): void;
    $registerInlineEditProvider(handle: number, selector: IDocumentFilterDto[], extensionId: ExtensionIdentifier, displayName: string): void;
    protected matchLanguage(selector: LanguageSelector | undefined, languageId: string): boolean;
    protected matchModel(selector: LanguageSelector | undefined, model: MonacoModelIdentifier): boolean;
    $registerDefinitionProvider(handle: number, selector: SerializedDocumentFilter[]): void;
    $registerDeclarationProvider(handle: number, selector: SerializedDocumentFilter[]): void;
    protected createDefinitionProvider(handle: number, selector: LanguageSelector | undefined): monaco.languages.DefinitionProvider;
    $registerTypeDefinitionProvider(handle: number, selector: SerializedDocumentFilter[]): void;
    protected createTypeDefinitionProvider(handle: number, selector: LanguageSelector | undefined): monaco.languages.TypeDefinitionProvider;
    $registerFoldingRangeProvider(handle: number, selector: SerializedDocumentFilter[], eventHandle: number | undefined): void;
    $emitFoldingRangeEvent(eventHandle: number, event?: any): void;
    createFoldingRangeProvider(handle: number, selector: LanguageSelector | undefined): FoldingRangeProvider;
    $registerDocumentColorProvider(handle: number, selector: SerializedDocumentFilter[]): void;
    createColorProvider(handle: number, selector: LanguageSelector | undefined): monaco.languages.DocumentColorProvider;
    $registerDocumentHighlightProvider(handle: number, selector: SerializedDocumentFilter[]): void;
    protected createDocumentHighlightProvider(handle: number, selector: LanguageSelector | undefined): monaco.languages.DocumentHighlightProvider;
    $registerDocumentFormattingProvider(handle: number, extension: IExtensionDescription, selector: SerializedDocumentFilter[]): void;
    createDocumentFormattingEditProvider(handle: number, extension: IExtensionDescription, selector: LanguageSelector | undefined): monaco.languages.DocumentFormattingEditProvider;
    $registerRangeFormattingProvider(handle: number, extension: IExtensionDescription, selector: SerializedDocumentFilter[]): void;
    createDocumentRangeFormattingEditProvider(handle: number, extension: IExtensionDescription, selector: LanguageSelector | undefined): monaco.languages.DocumentRangeFormattingEditProvider;
    $registerOnTypeFormattingProvider(handle: number, selector: SerializedDocumentFilter[], autoFormatTriggerCharacters: string[]): void;
    createOnTypeFormattingProvider(handle: number, selector: LanguageSelector | undefined, autoFormatTriggerCharacters: string[]): monaco.languages.OnTypeFormattingEditProvider;
    $registerCodeLensSupport(handle: number, selector: SerializedDocumentFilter[], eventHandle: number): void;
    createCodeLensProvider(handle: number, selector: LanguageSelector | undefined): monaco.languages.CodeLensProvider;
    $emitCodeLensEvent(eventHandle: number, event?: any): void;
    $clearDiagnostics(id: string): void;
    $changeDiagnostics(id: string, delta: [string, IMarkerData[]][]): void;
    $registerImplementationProvider(handle: number, selector: SerializedDocumentFilter[]): void;
    $registerDocumentLinkProvider(handle: number, selector: SerializedDocumentFilter[], supportsResolve: boolean): void;
    protected createImplementationProvider(handle: number, selector: LanguageSelector | undefined): monaco.languages.ImplementationProvider;
    $registerQuickFixProvider(handle: number, selector: SerializedDocumentFilter[], metadata: ICodeActionProviderMetadataDto, displayName: string, supportResolve: boolean): void;
    protected createQuickFixProvider(handle: number, selector: LanguageSelector | undefined, metadata: ICodeActionProviderMetadataDto, displayName: string, supportsResolve: boolean): modes.CodeActionProvider;
    protected createLinkProvider(handle: number, supportResolve: boolean): monaco.languages.LinkProvider;
    reviveLink(data: ILink): monaco.languages.ILink;
    $setLanguageConfiguration(handle: number, languageId: string, configuration: SerializedLanguageConfiguration): void;
    $registerReferenceProvider(handle: number, selector: SerializedDocumentFilter[]): void;
    protected createReferenceProvider(handle: number, selector: LanguageSelector | undefined): monaco.languages.ReferenceProvider;
    $registerWorkspaceSymbolProvider(handle: number): void;
    protected createWorkspaceSymbolProvider(handle: number): WorkspaceSymbolProvider;
    $registerOutlineSupport(handle: number, selector: SerializedDocumentFilter[]): void;
    protected createDocumentSymbolProvider(handle: number, selector: LanguageSelector | undefined): monaco.languages.DocumentSymbolProvider;
    $registerSignatureHelpProvider(handle: number, selector: SerializedDocumentFilter[], metadata: ISerializedSignatureHelpProviderMetadata): void;
    protected createSignatureHelpProvider(handle: number, selector: LanguageSelector | undefined, metadata: ISerializedSignatureHelpProviderMetadata): monaco.languages.SignatureHelpProvider;
    $registerRenameProvider(handle: number, selector: SerializedDocumentFilter[], supportsResolveLocation: boolean): void;
    protected createRenameProvider(handle: number, selector: LanguageSelector | undefined, supportsResolveLocation: boolean): monaco.languages.RenameProvider;
    createNewSymbolNamesProvider(handle: number, selector: LanguageSelector | undefined): monaco.languages.NewSymbolNamesProvider;
    $registerNewSymbolNamesProvider(handle: number, selector: SerializedDocumentFilter[]): void;
    /**
     * 将 IWorkspaceEditDto 转为 monaco-editor 中的 WorkspaceEdit
     */
    private reviveWorkspaceEditDto;
    $registerSelectionRangeProvider(handle: number, selector: SerializedDocumentFilter[]): void;
    protected createSelectionProvider(handle: number, selector?: LanguageSelector): monaco.languages.SelectionRangeProvider;
    $registerCallHierarchyProvider(handle: number, selector: SerializedDocumentFilter[]): void;
    private reviveCallHierarchyItemDto;
    protected createCallHierarchyProvider(handle: number, selector: LanguageSelector | undefined): {
        prepareCallHierarchy: (document: any, position: any, token: any) => Promise<{
            dispose: () => void;
            roots: CallHierarchyItem[];
        } | undefined>;
        provideOutgoingCalls: (item: any, token: any) => Promise<import("../../../common/vscode/model.api").IOutgoingCallDto[] | undefined>;
        provideIncomingCalls: (item: any, token: any) => Promise<import("../../../common/vscode/model.api").IIncomingCallDto[] | undefined>;
    };
    $registerTypeHierarchyProvider(handle: number, selector: SerializedDocumentFilter[]): void;
    private createTypeHierarchyProvider;
    private reviveTypeHierarchyItemDto;
    $registerDocumentSemanticTokensProvider(handle: number, selector: SerializedDocumentFilter[], legend: SemanticTokensLegend): void;
    $registerDocumentRangeSemanticTokensProvider(handle: number, selector: SerializedDocumentFilter[], legend: SemanticTokensLegend): void;
    $registerEvaluatableExpressionProvider(handler: number, selector: SerializedDocumentFilter[]): void;
    $registerInlineValuesProvider(handler: number, selector: SerializedDocumentFilter[], eventHandle: number | undefined): void;
    $emitInlineValuesEvent(eventHandle: number, event?: any): void;
    $registerLinkedEditingRangeProvider(handle: number, selector: SerializedDocumentFilter[]): void;
    $registerInlayHintsProvider(handle: number, selector: SerializedDocumentFilter[], supportsResolve: boolean, eventHandle: number | undefined): void;
    $emitInlayHintsEvent(eventHandle: number, event?: any): void;
    private readonly _status;
    $setLanguageStatus(handle: number, status: ILanguageStatus): void;
    $removeLanguageStatus(handle: number): void;
}
//# sourceMappingURL=main.thread.language.d.ts.map