import { SourceChange } from '@jupyter/ydoc';
import { ILSPCompletionThemeManager } from '@jupyter-lsp/completion-theme';
import { CodeEditor } from '@jupyterlab/codeeditor';
import { ICompletionProvider, CompletionHandler, ICompletionContext, Completer } from '@jupyterlab/completer';
import { ILSPDocumentConnectionManager } from '@jupyterlab/lsp';
import { IRenderMimeRegistry } from '@jupyterlab/rendermime';
import type * as lsProtocol from 'vscode-languageserver-protocol';
import { CodeCompletion as LSPCompletionSettings } from '../../_completion';
import { FeatureSettings } from '../../feature';
import { CompletionTriggerKind } from '../../lsp';
import { ILSPLogConsole } from '../../tokens';
import { BrowserConsole } from '../../virtual/console';
import { CompletionItem } from './item';
import { LSPCompletionRenderer } from './renderer';
interface IOptions {
    settings: FeatureSettings<LSPCompletionSettings>;
    renderMimeRegistry: IRenderMimeRegistry;
    iconsThemeManager: ILSPCompletionThemeManager;
    connectionManager: ILSPDocumentConnectionManager;
}
export declare class CompletionProvider implements ICompletionProvider<CompletionItem> {
    protected options: IOptions;
    readonly identifier = "lsp";
    readonly label = "LSP";
    readonly rank = 1000;
    protected console: BrowserConsole;
    constructor(options: IOptions);
    renderer: LSPCompletionRenderer;
    modelFactory: (context: ICompletionContext) => Promise<Completer.IModel>;
    /**
     * Resolve (fetch) details such as documentation.
     */
    resolve(completionItem: CompletionItem): Promise<any>;
    shouldShowContinuousHint(completerIsVisible: boolean, changed: SourceChange, context?: ICompletionContext): boolean;
    fetch(request: CompletionHandler.IRequest, context: ICompletionContext, trigger?: CompletionTriggerKind): Promise<CompletionHandler.ICompletionItemsReply<CompletionItem>>;
    isApplicable(context: ICompletionContext): Promise<boolean>;
}
export declare function transformLSPCompletions<T>(token: CodeEditor.IToken, positionInToken: number, lspCompletionItems: lsProtocol.CompletionItem[], createCompletionItem: (kind: string, match: lsProtocol.CompletionItem) => T, console: ILSPLogConsole): {
    start: number;
    end: number;
    items: T[];
    source: string;
};
export {};
