import { CodeEditor } from '@jupyterlab/codeeditor';
import { IGlobalJump, IJump, IJumpPosition } from '../jump';
import { IDocumentManager } from '@jupyterlab/docmanager';
import { LanguageAnalyzer, TokenContext } from '../languages/analyzer';
import { Kernel, KernelMessage } from '@jupyterlab/services';
import IIOPubMessage = KernelMessage.IIOPubMessage;
import { IDocumentWidget } from '@jupyterlab/docregistry';
import { JumpHistory } from '../history';
export declare abstract class CodeJumper {
    abstract language: string;
    document_manager: IDocumentManager;
    widget: IDocumentWidget;
    history: JumpHistory;
    abstract jump_to_definition(jump: IJump): void;
    abstract get editors(): ReadonlyArray<CodeEditor.IEditor>;
    protected _getLanguageAnalyzerForCell(cell_editor: CodeEditor.IEditor): LanguageAnalyzer;
    /**
     * Find the last definition of given variable.
     */
    protected _findLastDefinition(token: CodeEditor.IToken, stopIndex: number): {
        token: CodeEditor.IToken;
        cellIndex: number;
    };
    private go_to_position;
    global_jump(position: IGlobalJump, is_symlink?: boolean): void;
    try_to_open_document(path: string, is_symlink: boolean, line_number?: number, input_number?: number, column?: number): void;
    handle_path_from_kernel(response: IIOPubMessage, fallback_paths: string[]): void;
    get kernel(): Kernel.IKernelConnection;
    abstract get cwd(): string;
    queryKernel(code: string, kernel: Kernel.IKernelConnection, callback: (msg: KernelMessage.IIOPubMessage) => any): void;
    protected jump_to_cross_file_reference(context: TokenContext, cell_of_origin_analyzer: LanguageAnalyzer): void;
    handle_kernel_inspect(response: IIOPubMessage, fallback: Function): void;
    protected inspect_and_jump(context: TokenContext, cell_of_origin_analyzer: LanguageAnalyzer, fallback: Function, callback: Function): void;
    abstract jump(position: IJumpPosition): void;
    abstract getOffset(position: CodeEditor.IPosition, cell?: number): number;
    abstract getJumpPosition(position: CodeEditor.IPosition, input_number?: number): IJumpPosition;
}
export declare let jumpers: Map<string, any>;
