/// <reference types="react" />
import { VDomModel, VDomRenderer } from '@jupyterlab/apputils';
import { DocumentRegistry, IDocumentWidget } from '@jupyterlab/docregistry';
import { INotebookModel, NotebookPanel } from '@jupyterlab/notebook';
import { Popup } from '@jupyterlab/statusbar';
import { TranslationBundle } from '@jupyterlab/translation';
import { LabIcon } from '@jupyterlab/ui-components';
import '../../style/statusbar.css';
import * as SCHEMA from '../_schema';
import { WidgetAdapter } from '../adapters/adapter';
import { LSPConnection } from '../connection';
import { DocumentConnectionManager } from '../connection_manager';
import { LanguageServerManager } from '../manager';
import { ILSPAdapterManager, ILanguageServerManager, TSessionMap } from '../tokens';
import { VirtualDocument } from '../virtual/document';
export interface IListProps {
    /**
     * A title to display.
     */
    title: string;
    list: any[];
    /**
     * By default the list will be expanded; to change the initial state to collapsed, set to true.
     */
    startCollapsed?: boolean;
}
export interface ICollapsibleListStates {
    isCollapsed: boolean;
}
/**
 * StatusBar item.
 */
export declare class LSPStatus extends VDomRenderer<LSPStatus.Model> {
    protected displayText: boolean;
    protected _popup: Popup | null;
    private interactiveStateObserver;
    private trans;
    /**
     * Construct a new VDomRenderer for the status item.
     */
    constructor(widget_manager: ILSPAdapterManager, displayText: boolean, trans: TranslationBundle);
    protected onAfterAttach(msg: any): void;
    protected onBeforeDetach(msg: any): void;
    /**
     * Render the status item.
     */
    render(): JSX.Element | null;
    handleClick: () => void;
}
export declare class StatusButtonExtension implements DocumentRegistry.IWidgetExtension<NotebookPanel, INotebookModel> {
    private options;
    constructor(options: {
        language_server_manager: LanguageServerManager;
        connection_manager: DocumentConnectionManager;
        adapter_manager: ILSPAdapterManager;
        translator_bundle: TranslationBundle;
    });
    /**
     * For statusbar registration and for internal use.
     */
    createItem(displayText?: boolean): LSPStatus;
    /**
     * For registration on notebook panels.
     */
    createNew(panel: NotebookPanel, context: DocumentRegistry.IContext<INotebookModel>): LSPStatus;
}
declare type StatusCode = 'no_server_extension' | 'waiting' | 'initializing' | 'initialized' | 'connecting' | 'initialized_but_some_missing';
export interface IStatus {
    connected_documents: Set<VirtualDocument>;
    initialized_documents: Set<VirtualDocument>;
    open_connections: Array<LSPConnection>;
    detected_documents: Set<VirtualDocument>;
    status: StatusCode;
}
export declare namespace LSPStatus {
    /**
     * A VDomModel for the LSP of current file editor/notebook.
     */
    class Model extends VDomModel {
        server_extension_status: SCHEMA.ServersResponse | null;
        language_server_manager: ILanguageServerManager;
        trans: TranslationBundle;
        private _connection_manager;
        constructor(widget_adapter_manager: ILSPAdapterManager, trans: TranslationBundle);
        get available_servers(): TSessionMap;
        get supported_languages(): Set<string>;
        private is_server_running;
        get documents_by_server(): Map<SCHEMA.LanguageServerSession, Map<string, VirtualDocument[]>>;
        get servers_available_not_in_use(): Array<SCHEMA.LanguageServerSession>;
        get detected_languages(): Set<string>;
        get missing_languages(): Array<string>;
        get status(): IStatus;
        get status_icon(): LabIcon;
        get short_message(): string;
        get feature_message(): string;
        get long_message(): string;
        get adapter(): WidgetAdapter<IDocumentWidget> | null;
        change_adapter(adapter: WidgetAdapter<IDocumentWidget> | null): void;
        get connection_manager(): DocumentConnectionManager;
        /**
         * Note: it is ever only set once, as connection_manager is a singleton.
         */
        set connection_manager(connection_manager: DocumentConnectionManager);
        private _onChange;
        private _adapter;
    }
}
export {};
