import { JupyterFrontEnd } from '@jupyterlab/application';
import { IDocumentWidget } from '@jupyterlab/docregistry';
import { ILSPConnection, WidgetLSPAdapter, ILSPDocumentConnectionManager, IEditorPosition, IRootPosition, IVirtualPosition, Document } from '@jupyterlab/lsp';
import { BrowserConsole } from './virtual/console';
import { VirtualDocument } from './virtual/document';
export declare class ContextAssembler {
    private options;
    protected console: BrowserConsole;
    constructor(options: ContextAssembler.IOptions);
    /**
     * Get context from current context menu (or fallback to document context).
     */
    getContext(): ICommandContext | null;
    isContextMenuOverToken(): boolean | undefined;
    private _wasOverToken;
    private _contextFromActiveDocument;
    private _contextFromRoot;
    adapterFromNode(leafNode: HTMLElement): WidgetLSPAdapter<any> | undefined;
    positionFromCoordinates(left: number, top: number, adapter: WidgetLSPAdapter<any>, editorAccessor: Document.IEditor | undefined): IRootPosition | null;
    editorPositionFromCoordinates(left: number, top: number, editorAccessor: Document.IEditor): IEditorPosition | null;
    editorFromNode(adapter: WidgetLSPAdapter<any>, node: HTMLElement): Document.IEditor | undefined;
    private getContextFromContextMenu;
}
export declare namespace ContextAssembler {
    interface IOptions {
        app: JupyterFrontEnd;
        connectionManager: ILSPDocumentConnectionManager;
    }
}
export interface ICommandContext {
    document: VirtualDocument;
    connection?: ILSPConnection;
    virtualPosition: IVirtualPosition;
    rootPosition: IRootPosition;
    adapter: WidgetLSPAdapter<IDocumentWidget>;
}
