import { CodeJumper } from '@jupyter-lsp/code-jumpers';
import { JupyterFrontEndPlugin } from '@jupyterlab/application';
import { IDocumentManager } from '@jupyterlab/docmanager';
import { IEditorTracker } from '@jupyterlab/fileeditor';
import { WidgetLSPAdapter } from '@jupyterlab/lsp';
import { AnyLocation } from '@jupyterlab/lsp/lib/lsp';
import { INotebookTracker } from '@jupyterlab/notebook';
import { TranslationBundle } from '@jupyterlab/translation';
import { LabIcon } from '@jupyterlab/ui-components';
import type * as lsp from 'vscode-languageserver-protocol';
import * as lsProtocol from 'vscode-languageserver-protocol';
import { CodeJump as LSPJumpSettings, ModifierKey } from '../_jump_to';
import { ContextAssembler } from '../context';
import { FeatureSettings, Feature } from '../feature';
import { BrowserConsole } from '../virtual/console';
import { VirtualDocument } from '../virtual/document';
export declare const jumpToIcon: LabIcon;
declare const enum JumpResult {
    NoTargetsFound = 1,
    PositioningFailure = 2,
    PathResolutionFailure = 3,
    AssumeSuccess = 4,
    UnspecifiedFailure = 5,
    AlreadyAtTarget = 6
}
export declare class NavigationFeature extends Feature {
    readonly id: string;
    readonly capabilities: lsProtocol.ClientCapabilities;
    protected settings: FeatureSettings<LSPJumpSettings>;
    protected console: BrowserConsole;
    protected contextAssembler: ContextAssembler;
    constructor(options: NavigationFeature.IOptions);
    getJumper(adapter: WidgetLSPAdapter<any>): CodeJumper;
    protected get modifierKey(): ModifierKey;
    private _jumpOnMouseUp;
    private _jumpToDefinitionOrRefernce;
    private _harmonizeLocations;
    private _chooseTarget;
    private _resolvePath;
    handleJump(locationData: AnyLocation, positionParams: lsp.TextDocumentPositionParams, adapter: WidgetLSPAdapter<any>, document: VirtualDocument): Promise<JumpResult.NoTargetsFound | JumpResult.PositioningFailure | JumpResult.PathResolutionFailure | JumpResult.AssumeSuccess | JumpResult.AlreadyAtTarget>;
    private _trans;
    private _jumpers;
}
export declare namespace NavigationFeature {
    interface IOptions extends Feature.IOptions {
        settings: FeatureSettings<LSPJumpSettings>;
        trans: TranslationBundle;
        notebookTracker: INotebookTracker;
        documentManager: IDocumentManager;
        contextAssembler: ContextAssembler;
        fileEditorTracker: IEditorTracker | null;
    }
    const id: string;
}
export declare namespace CommandIDs {
    const jumpToDefinition = "lsp:jump-to-definition";
    const jumpToReference = "lsp:jump-to-reference";
    const jumpBack = "lsp:jump-back";
}
export declare const JUMP_PLUGIN: JupyterFrontEndPlugin<void>;
export {};
