import { Language } from '@codemirror/language';
import { ChangeSet } from '@codemirror/state';
import { JupyterFrontEndPlugin } from '@jupyterlab/application';
import { IEditorLanguageRegistry } from '@jupyterlab/codemirror';
import { IEditorPosition, IRootPosition, WidgetLSPAdapter } from '@jupyterlab/lsp';
import { IRenderMimeRegistry } from '@jupyterlab/rendermime';
import * as lsProtocol from 'vscode-languageserver-protocol';
import { CodeSignature as LSPSignatureSettings } from '../_signature';
import { EditorTooltipManager } from '../components/free_tooltip';
import { FeatureSettings, Feature } from '../feature';
import { ILogConsoleCore } from '../tokens';
import { BrowserConsole } from '../virtual/console';
interface ISplit {
    lead: string;
    remainder: string;
}
export declare function extractLead(lines: string[], size: number): ISplit | null;
/**
 * Represent signature as a Markdown element.
 */
export declare function signatureToMarkdown(item: lsProtocol.SignatureInformation, language: Language | undefined, codeHighlighter: (source: string, variable: lsProtocol.ParameterInformation, language: Language | undefined) => string, logger: ILogConsoleCore, activeParameterFallback?: number | null, maxLinesBeforeCollapse?: number): string;
export declare function highlightCode(source: string, parameter: lsProtocol.ParameterInformation, language: Language | undefined): string;
export declare class SignatureFeature extends Feature {
    readonly id: string;
    readonly capabilities: lsProtocol.ClientCapabilities;
    tooltip: EditorTooltipManager;
    protected signatureCharacter: IRootPosition;
    protected _signatureCharacters: string[];
    protected console: BrowserConsole;
    protected settings: FeatureSettings<LSPSignatureSettings>;
    protected languageRegistry: IEditorLanguageRegistry;
    constructor(options: SignatureFeature.IOptions);
    get _closeCharacters(): string[];
    onBlur(event: FocusEvent): void;
    onCursorActivity(adapter: WidgetLSPAdapter<any>, newEditorPosition: IEditorPosition): Promise<void>;
    protected getMarkupForSignatureHelp(response: lsProtocol.SignatureHelp, language: Language | undefined): lsProtocol.MarkupContent;
    /**
     * Represent signature as a Markdown element.
     */
    protected signatureToMarkdown(item: lsProtocol.SignatureInformation, language: Language | undefined, activeParameterFallback?: number | null): string;
    private _removeTooltip;
    private _hideTooltip;
    private handleSignature;
    protected isSignatureShown(): boolean;
    afterChange(change: ChangeSet, adapter: WidgetLSPAdapter<any>, editorPosition: IEditorPosition): Promise<void>;
    private _requestSignature;
}
export declare namespace SignatureFeature {
    interface IOptions extends Feature.IOptions {
        settings: FeatureSettings<LSPSignatureSettings>;
        renderMimeRegistry: IRenderMimeRegistry;
        languageRegistry: IEditorLanguageRegistry;
    }
    const id: string;
}
export declare const SIGNATURE_PLUGIN: JupyterFrontEndPlugin<void>;
export {};
