import vscode, { CallHierarchyProvider, CancellationToken, CodeActionProvider, CodeActionProviderMetadata, CodeLensProvider, CompletionItemProvider, DeclarationProvider, DefinitionProvider, Diagnostic, DiagnosticCollection, DocumentColorProvider, DocumentFormattingEditProvider, DocumentHighlightProvider, DocumentLinkProvider, DocumentRangeFormattingEditProvider, DocumentRangeSemanticTokensProvider, DocumentSelector, DocumentSemanticTokensProvider, DocumentSymbolProvider, EvaluatableExpressionProvider, FoldingContext, FoldingRangeProvider, HoverProvider, ImplementationProvider, InlineEditContext, InlineValuesProvider, LanguageConfiguration, LinkedEditingRangeProvider, NewSymbolName, NewSymbolNamesProvider, OnTypeFormattingEditProvider, ReferenceProvider, RenameProvider, SelectionRangeProvider, SemanticTokensLegend, SignatureHelpProvider, SignatureHelpProviderMetadata, TextDocument, TypeDefinitionProvider, TypeHierarchyProvider, WorkspaceSymbolProvider } from 'vscode';
import { SymbolInformation } from 'vscode-languageserver-types';
import { IRPCProtocol } from '@opensumi/ide-connection';
import { IDisposable, IExtensionLogger, Uri, UriComponents } from '@opensumi/ide-core-common';
import { InlineValue } from '@opensumi/ide-debug/lib/common/inline-values';
import { ExtensionDocumentDataManager, ExtensionNotebookDocumentManager, ICodeActionListDto, IExtHostLanguages, IExtensionDescription, IInlayHintDto, IInlayHintsDto, IInlineValueContextDto, ILinkedEditingRangesDto, ISuggestDataDto, IdentifiableInlineCompletions, IdentifiableInlineEdit, InlineCompletionContext } from '../../../common/vscode';
import { Disposable } from '../../../common/vscode/ext-types';
import { ChainedCacheId, CodeLens, ColorPresentation, CompletionContext, Definition, DefinitionLink, DocumentHighlight, DocumentSymbol, FoldingRange, FormattingOptions, Hover, ICallHierarchyItemDto, ICodeLensListDto, IIncomingCallDto, ILink, ILinksListDto, IOutgoingCallDto, ISignatureHelpDto, Location, Position, Range, RawColorInfo, ReferenceContext, RenameLocation, Selection, SelectionRange, SignatureHelpContextDto, SingleEditOperation, WithDuration, WorkspaceEditDto } from '../../../common/vscode/model.api';
import { ExtHostCommands } from './ext.host.command';
import { CallHierarchyAdapter } from './language/callhierarchy';
import { CodeActionAdapter } from './language/code-action';
import { ColorProviderAdapter } from './language/color';
import { CompletionAdapter } from './language/completion';
import { DeclarationAdapter } from './language/declaration';
import { DefinitionAdapter } from './language/definition';
import { DocumentHighlightAdapter } from './language/document-highlight';
import { EvaluatableExpressionAdapter } from './language/evaluatableExpression';
import { FoldingProviderAdapter } from './language/folding';
import { HoverAdapter } from './language/hover';
import { ImplementationAdapter } from './language/implementation';
import { InlayHintsAdapter } from './language/inlay-hints';
import { InlineValuesAdapter } from './language/inline-values';
import { InlineCompletionAdapter } from './language/inlineCompletion';
import { InlineEditAdapter } from './language/inlineEdit';
import { CodeLensAdapter } from './language/lens';
import { LinkProviderAdapter } from './language/link-provider';
import { LinkedEditingRangeAdapter } from './language/linked-editing-range';
import { NewSymbolNamesAdapter } from './language/new-symbol-names';
import { OnTypeFormattingAdapter } from './language/on-type-formatting';
import { OutlineAdapter } from './language/outline';
import { FormattingAdapter, RangeFormattingAdapter } from './language/range-formatting';
import { ReferenceAdapter } from './language/reference';
import { RenameAdapter } from './language/rename';
import { SelectionRangeAdapter } from './language/selection';
import { DocumentRangeSemanticTokensAdapter, DocumentSemanticTokensAdapter } from './language/semantic-tokens';
import { SignatureHelpAdapter } from './language/signature';
import { TypeDefinitionAdapter } from './language/type-definition';
import { TypeHierarchyAdapter } from './language/type-hierarchy';
import { WorkspaceSymbolAdapter } from './language/workspace-symbol';
import type { IPosition } from '@opensumi/ide-monaco/lib/common';
import type { CodeActionContext, NewSymbolNameTriggerKind } from '@opensumi/monaco-editor-core/esm/vs/editor/common/languages';
export declare function createLanguagesApiFactory(extHostLanguages: ExtHostLanguages, extHostNotebook: ExtensionNotebookDocumentManager, extension: IExtensionDescription): typeof vscode.languages;
export type Adapter = HoverAdapter | CompletionAdapter | DefinitionAdapter | TypeDefinitionAdapter | FoldingProviderAdapter | ColorProviderAdapter | DocumentHighlightAdapter | RangeFormattingAdapter | CodeLensAdapter | OnTypeFormattingAdapter | CodeActionAdapter | ImplementationAdapter | LinkProviderAdapter | OutlineAdapter | WorkspaceSymbolAdapter | ReferenceAdapter | SignatureHelpAdapter | SelectionRangeAdapter | FormattingAdapter | RenameAdapter | DeclarationAdapter | CallHierarchyAdapter | TypeHierarchyAdapter | DocumentSemanticTokensAdapter | DocumentRangeSemanticTokensAdapter | EvaluatableExpressionAdapter | InlineValuesAdapter | LinkedEditingRangeAdapter | InlayHintsAdapter | InlineCompletionAdapter | InlineEditAdapter | NewSymbolNamesAdapter;
export declare class ExtHostLanguages implements IExtHostLanguages {
    private documents;
    private commands;
    private logService;
    private readonly proxy;
    private readonly rpcProtocol;
    private callId;
    private _adapter;
    private diagnostics;
    constructor(rpcProtocol: IRPCProtocol, documents: ExtensionDocumentDataManager, commands: ExtHostCommands, logService: IExtensionLogger);
    $resolveCodeAction(handle: number, id: ChainedCacheId, token: CancellationToken): Promise<WorkspaceEditDto | undefined>;
    $releaseCodeActions(handle: number, cacheId: number): void;
    private nextCallId;
    private createDisposable;
    private addNewAdapter;
    private static _extLabel;
    private withAdapter;
    private withDurationRecord;
    private transformDocumentSelector;
    private doTransformDocumentSelector;
    getLanguages(): Promise<string[]>;
    changeLanguage(uri: Uri, languageId: string): Promise<TextDocument>;
    registerHoverProvider(selector: DocumentSelector, provider: HoverProvider, extension: IExtensionDescription): Disposable;
    $provideHover(handle: number, resource: any, position: Position, token: CancellationToken): Promise<Hover | undefined>;
    $provideHoverWithDuration(handle: number, resource: any, position: Position, token: CancellationToken): Promise<WithDuration<Hover | undefined>>;
    $provideCompletionItems(handle: number, resource: Uri, position: Position, context: CompletionContext, token: CancellationToken): Promise<import("../../../common/vscode").ISuggestResultDto | undefined>;
    $resolveCompletionItem(handle: number, id: ChainedCacheId, token: CancellationToken): Promise<ISuggestDataDto | undefined>;
    $releaseCompletionItems(handle: number, id: number): void;
    registerCompletionItemProvider(selector: DocumentSelector, provider: CompletionItemProvider, triggerCharacters: string[], extension: IExtensionDescription): Disposable;
    registerInlineCompletionsProvider(extension: IExtensionDescription, selector: vscode.DocumentSelector, provider: vscode.InlineCompletionItemProvider, metadata: vscode.InlineCompletionItemProviderMetadata | undefined): Disposable;
    registerInlineEditProvider(extension: IExtensionDescription, selector: vscode.DocumentSelector, provider: vscode.InlineEditProvider): Disposable;
    $provideInlineEdit(handle: number, resource: UriComponents, context: InlineEditContext, token: CancellationToken): Promise<IdentifiableInlineEdit | undefined>;
    $freeInlineEdit(handle: number, pid: number): void;
    $provideInlineCompletions(handle: number, resource: UriComponents, position: IPosition, context: InlineCompletionContext, token: CancellationToken): Promise<IdentifiableInlineCompletions | undefined>;
    $handleInlineCompletionDidShow(handle: number, pid: number, idx: number, updatedInsertText: string): void;
    $handleInlineCompletionPartialAccept(handle: number, pid: number, idx: number, acceptedCharacters: number): void;
    $freeInlineCompletionsList(handle: number, pid: number): void;
    $provideDefinition(handle: number, resource: Uri, position: Position, token: CancellationToken): Promise<Definition | DefinitionLink[] | undefined>;
    $provideDefinitionWithDuration(handle: number, resource: Uri, position: Position, token: CancellationToken): Promise<WithDuration<Definition | DefinitionLink[] | undefined>>;
    registerDefinitionProvider(selector: DocumentSelector, provider: DefinitionProvider, extension: IExtensionDescription): Disposable;
    $provideTypeDefinition(handle: number, resource: Uri, position: Position, token: CancellationToken): Promise<Definition | DefinitionLink[] | undefined>;
    $provideTypeDefinitionWithDuration(handle: number, resource: Uri, position: Position, token: CancellationToken): any;
    registerTypeDefinitionProvider(selector: DocumentSelector, provider: TypeDefinitionProvider, extension: IExtensionDescription): Disposable;
    registerFoldingRangeProvider(selector: DocumentSelector, provider: FoldingRangeProvider, extension: IExtensionDescription): Disposable;
    $provideFoldingRange(handle: number, resource: Uri, context: FoldingContext, token: CancellationToken): Promise<FoldingRange[] | undefined>;
    registerColorProvider(selector: DocumentSelector, provider: DocumentColorProvider, extension: IExtensionDescription): Disposable;
    $provideDocumentColors(handle: number, resource: Uri, token: CancellationToken): Promise<RawColorInfo[]>;
    $provideColorPresentations(handle: number, resource: Uri, colorInfo: RawColorInfo, token: CancellationToken): Promise<ColorPresentation[]>;
    registerDocumentHighlightProvider(selector: DocumentSelector, provider: DocumentHighlightProvider, extension: IExtensionDescription): Disposable;
    $provideDocumentHighlights(handle: number, resource: Uri, position: Position, token: CancellationToken): Promise<DocumentHighlight[] | undefined>;
    registerDocumentFormattingEditProvider(extension: IExtensionDescription, selector: DocumentSelector, provider: DocumentFormattingEditProvider): Disposable;
    $provideDocumentFormattingEdits(handle: number, resource: Uri, options: FormattingOptions): Promise<SingleEditOperation[] | undefined>;
    registerDocumentRangeFormattingEditProvider(extension: IExtensionDescription, selector: DocumentSelector, provider: DocumentRangeFormattingEditProvider): Disposable;
    $provideDocumentRangeFormattingEdits(handle: number, resource: Uri, range: Range, options: FormattingOptions): Promise<SingleEditOperation[] | undefined>;
    registerOnTypeFormattingEditProvider(selector: DocumentSelector, provider: OnTypeFormattingEditProvider, triggerCharacters: string[], extension: IExtensionDescription): Disposable;
    $provideOnTypeFormattingEdits(handle: number, resource: Uri, position: Position, ch: string, options: FormattingOptions): Promise<SingleEditOperation[] | undefined>;
    $provideOnTypeFormattingEditsWithDuration(handle: number, resource: Uri, position: Position, ch: string, options: FormattingOptions): Promise<WithDuration<SingleEditOperation[] | undefined>>;
    registerCodeLensProvider(selector: DocumentSelector, provider: CodeLensProvider, extension: IExtensionDescription): Disposable;
    $provideCodeLenses(handle: number, resource: Uri, token: CancellationToken): Promise<ICodeLensListDto | undefined>;
    $resolveCodeLens(handle: number, symbol: CodeLens, token: CancellationToken): Promise<CodeLens | undefined>;
    $releaseCodeLens(handle: number, cacheId: number): Promise<void>;
    registerCodeActionsProvider(extension: IExtensionDescription, selector: DocumentSelector, provider: CodeActionProvider, metadata?: CodeActionProviderMetadata): Disposable;
    $provideCodeActions(handle: number, resource: Uri, rangeOrSelection: Range | Selection, context: CodeActionContext, token: CancellationToken): Promise<ICodeActionListDto | undefined>;
    $provideImplementation(handle: number, resource: Uri, position: Position): Promise<Definition | DefinitionLink[] | undefined>;
    $provideImplementationWithDuration(handle: number, resource: Uri, position: Position): Promise<WithDuration<Definition | DefinitionLink[] | undefined>>;
    registerImplementationProvider(selector: DocumentSelector, provider: ImplementationProvider, extension: IExtensionDescription): Disposable;
    registerDeclarationProvider(selector: DocumentSelector, provider: DeclarationProvider, extension: IExtensionDescription): Disposable;
    get onDidChangeDiagnostics(): import("@opensumi/ide-core-common").Event<vscode.DiagnosticChangeEvent>;
    getDiagnostics(resource?: Uri): Diagnostic[] | [Uri, Diagnostic[]][];
    createDiagnosticCollection(name?: string): DiagnosticCollection;
    $provideDocumentLinks(handle: number, resource: Uri, token: CancellationToken): Promise<ILinksListDto | undefined>;
    $resolveDocumentLink(handle: number, id: ChainedCacheId, token: CancellationToken): Promise<ILink | undefined>;
    $releaseDocumentLinks(handle: number, cacheId: number): Promise<void>;
    registerDocumentLinkProvider(selector: DocumentSelector, provider: DocumentLinkProvider, extension: IExtensionDescription): Disposable;
    $provideReferences(handle: number, resource: Uri, position: Position, context: ReferenceContext, token: CancellationToken): Promise<Location[] | undefined>;
    $provideReferencesWithDuration(handle: number, resource: Uri, position: Position, context: ReferenceContext, token: CancellationToken): Promise<WithDuration<Location[] | undefined>>;
    registerReferenceProvider(selector: DocumentSelector, provider: ReferenceProvider, extension: IExtensionDescription): Disposable;
    setLanguageConfiguration(language: string, configuration: LanguageConfiguration): Disposable;
    registerDocumentSymbolProvider(selector: DocumentSelector, provider: DocumentSymbolProvider, extension: IExtensionDescription): Disposable;
    $provideDocumentSymbols(handle: number, resource: Uri, token: CancellationToken): Promise<DocumentSymbol[] | undefined>;
    registerWorkspaceSymbolProvider(provider: WorkspaceSymbolProvider, extension: IExtensionDescription): Disposable;
    $provideWorkspaceSymbols(handle: number, query: string, token: CancellationToken): PromiseLike<SymbolInformation[]>;
    $resolveWorkspaceSymbol(handle: number, symbol: SymbolInformation, token: CancellationToken): PromiseLike<SymbolInformation | undefined>;
    $provideSignatureHelp(handle: number, resource: Uri, position: Position, context: SignatureHelpContextDto, token: CancellationToken): Promise<ISignatureHelpDto | undefined>;
    $releaseSignatureHelp(handle: number, cacheId: number): Promise<void>;
    registerSignatureHelpProvider(selector: DocumentSelector, provider: SignatureHelpProvider, metadataOrTriggerChars: string[] | SignatureHelpProviderMetadata, extension: IExtensionDescription): Disposable;
    registerRenameProvider(selector: DocumentSelector, provider: RenameProvider, extension: IExtensionDescription): Disposable;
    $provideRenameEdits(handle: number, resource: Uri, position: Position, newName: string, token: CancellationToken): Promise<WorkspaceEditDto | undefined>;
    $resolveRenameLocation(handle: number, resource: Uri, position: Position, token: CancellationToken): Promise<RenameLocation | undefined>;
    registerNewSymbolNamesProvider(selector: DocumentSelector, provider: NewSymbolNamesProvider, extension: IExtensionDescription): Disposable;
    $provideNewSymbolNames(handle: number, resource: Uri, range: Range, triggerKind: NewSymbolNameTriggerKind, token: CancellationToken): Promise<NewSymbolName[] | undefined>;
    registerSelectionRangeProvider(selector: DocumentSelector, provider: SelectionRangeProvider, extension: IExtensionDescription): Disposable;
    $provideSelectionRanges(handle: number, resource: Uri, positions: Position[], token: CancellationToken): Promise<SelectionRange[][]>;
    registerCallHierarchyProvider(selector: DocumentSelector, provider: CallHierarchyProvider, extension: IExtensionDescription): Disposable;
    $prepareCallHierarchy(handle: number, resource: UriComponents, position: Position, token: CancellationToken): Promise<ICallHierarchyItemDto[] | undefined>;
    $provideCallHierarchyIncomingCalls(handle: number, sessionId: string, itemId: string, token: CancellationToken): Promise<IIncomingCallDto[] | undefined>;
    $provideCallHierarchyOutgoingCalls(handle: number, sessionId: string, itemId: string, token: CancellationToken): Promise<IOutgoingCallDto[] | undefined>;
    $releaseCallHierarchy(handle: number, sessionId: string): void;
    registerTypeHierarchyProvider(selector: DocumentSelector, provider: TypeHierarchyProvider, extension: IExtensionDescription): Disposable;
    $prepareTypeHierarchy(handle: number, resource: UriComponents, position: Position, token: CancellationToken): Promise<{
        _sessionId: string;
        _itemId: string;
        kind: import("@opensumi/ide-monaco/lib/common").SymbolKind;
        name: string;
        detail?: string | undefined;
        uri: import("vscode-uri/lib/umd/uri").UriComponents;
        range: {
            startLineNumber: number;
            startColumn: number;
            endLineNumber: number;
            endColumn: number;
        };
        selectionRange: {
            startLineNumber: number;
            startColumn: number;
            endLineNumber: number;
            endColumn: number;
        };
        tags?: import("@opensumi/ide-core-common").SymbolTag[] | undefined;
    }[] | undefined>;
    $provideTypeHierarchySupertypes(handle: number, sessionId: string, itemId: string, token: CancellationToken): Promise<{
        _sessionId: string;
        _itemId: string;
        kind: import("@opensumi/ide-monaco/lib/common").SymbolKind;
        name: string;
        detail?: string | undefined;
        uri: import("vscode-uri/lib/umd/uri").UriComponents;
        range: {
            startLineNumber: number;
            startColumn: number;
            endLineNumber: number;
            endColumn: number;
        };
        selectionRange: {
            startLineNumber: number;
            startColumn: number;
            endLineNumber: number;
            endColumn: number;
        };
        tags?: import("@opensumi/ide-core-common").SymbolTag[] | undefined;
    }[] | undefined>;
    $provideTypeHierarchySubtypes(handle: number, sessionId: string, itemId: string, token: CancellationToken): Promise<{
        _sessionId: string;
        _itemId: string;
        kind: import("@opensumi/ide-monaco/lib/common").SymbolKind;
        name: string;
        detail?: string | undefined;
        uri: import("vscode-uri/lib/umd/uri").UriComponents;
        range: {
            startLineNumber: number;
            startColumn: number;
            endLineNumber: number;
            endColumn: number;
        };
        selectionRange: {
            startLineNumber: number;
            startColumn: number;
            endLineNumber: number;
            endColumn: number;
        };
        tags?: import("@opensumi/ide-core-common").SymbolTag[] | undefined;
    }[] | undefined>;
    $releaseTypeHierarchy(handle: number, sessionId: string): void;
    registerDocumentSemanticTokensProvider(selector: DocumentSelector, provider: DocumentSemanticTokensProvider, legend: SemanticTokensLegend, extension: IExtensionDescription): Disposable;
    $provideDocumentSemanticTokens(handle: number, resource: Uri, previousResultId: number, token: CancellationToken): Promise<Uint8Array | null>;
    $releaseDocumentSemanticTokens(handle: number, semanticColoringResultId: number): void;
    registerDocumentRangeSemanticTokensProvider(extension: IExtensionDescription, selector: DocumentSelector, provider: DocumentRangeSemanticTokensProvider, legend: SemanticTokensLegend): Disposable;
    $provideDocumentRangeSemanticTokens(handle: number, resource: Uri, range: Range, token: CancellationToken): Promise<Uint8Array | null>;
    registerEvaluatableExpressionProvider(extension: IExtensionDescription, selector: DocumentSelector, provider: EvaluatableExpressionProvider): Disposable;
    $provideEvaluatableExpression(handle: number, resource: Uri, position: Position, token: CancellationToken): Promise<import("@opensumi/ide-debug/lib/common/evaluatable-expression").IEvaluatableExpression | undefined>;
    registerInlineValuesProvider(extension: IExtensionDescription, selector: DocumentSelector, provider: InlineValuesProvider): Disposable;
    $provideInlineValues(handle: number, resource: Uri, range: Range, context: IInlineValueContextDto, token: CancellationToken): Promise<InlineValue[] | undefined>;
    registerLinkedEditingRangeProvider(extension: IExtensionDescription, selector: DocumentSelector, provider: LinkedEditingRangeProvider): Disposable;
    $provideLinkedEditingRanges(handle: number, resource: UriComponents, position: Position, token: CancellationToken): Promise<ILinkedEditingRangesDto | undefined>;
    registerInlayHintsProvider(extension: IExtensionDescription, selector: vscode.DocumentSelector, provider: vscode.InlayHintsProvider): Disposable;
    $provideInlayHints(handle: number, resource: UriComponents, range: Range, token: CancellationToken): Promise<IInlayHintsDto | undefined>;
    $resolveInlayHint(handle: number, id: ChainedCacheId, token: CancellationToken): Promise<IInlayHintDto | undefined>;
    $releaseInlayHints(handle: number, id: number): void;
    private _handlePool;
    private _ids;
    createLanguageStatusItem(extension: IExtensionDescription, id: string, selector: vscode.DocumentSelector): vscode.LanguageStatusItem;
    registerDocumentDropEditProvider(extension: IExtensionDescription, selector: vscode.DocumentSelector, provider: vscode.DocumentDropEditProvider, metadata?: vscode.DocumentDropEditProviderMetadata): IDisposable;
    registerDocumentPasteEditProvider(extension: IExtensionDescription, selector: vscode.DocumentSelector, provider: vscode.DocumentPasteEditProvider, metadata: vscode.DocumentPasteProviderMetadata): IDisposable;
}
//# sourceMappingURL=ext.host.language.d.ts.map