import { ILogger, ActionHandlerRegistry, IActionDispatcher, SModelStorage, ViewerOptions, DiagramServer, ActionMessage, ExportSvgAction, Action, ICommand, ServerStatusAction, RequestPopupModelAction, SModelRootSchema, SModelElementSchema } from 'sprotty/lib';
import { TheiaSprottyConnector } from './theia-sprotty-connector';
import { Workspace } from '@theia/languages/lib/browser';
export declare const TheiaDiagramServerProvider: unique symbol;
export declare type TheiaDiagramServerProvider = () => Promise<TheiaDiagramServer>;
export declare const IRootPopupModelProvider: unique symbol;
export interface IRootPopupModelProvider {
    getPopupModel(action: RequestPopupModelAction, rootElement: SModelRootSchema): Promise<SModelElementSchema | undefined>;
}
/**
 * A sprotty DiagramServer that can be connected to a Theia language
 * server.
 *
 * This class is the sprotty side of the Theia/sprotty integration. It
 * is instantiated with the DI container of the sprotty diagram. Theia
 * services are available via the TheiaDiagramServerConnector.
 */
export declare class TheiaDiagramServer extends DiagramServer {
    actionDispatcher: IActionDispatcher;
    private connector;
    private resolveConnector;
    protected sourceUri: string;
    protected workspace: Workspace | undefined;
    protected rootPopupModelProvider: IRootPopupModelProvider;
    constructor(actionDispatcher: IActionDispatcher, actionHandlerRegistry: ActionHandlerRegistry, viewerOptions: ViewerOptions, storage: SModelStorage, logger: ILogger);
    connect(connector: TheiaSprottyConnector): void;
    disconnect(): void;
    private waitForConnector;
    getConnector(): Promise<TheiaSprottyConnector>;
    getSourceUri(): string;
    getWorkspace(): Workspace | undefined;
    initialize(registry: ActionHandlerRegistry): void;
    handle(action: Action): void | ICommand;
    handleLocally(action: Action): boolean;
    handleExportSvgAction(action: ExportSvgAction): boolean;
    handleRequestPopupModel(action: RequestPopupModelAction): boolean;
    protected handleServerStateAction(status: ServerStatusAction): boolean;
    sendMessage(message: ActionMessage): void;
    /**
     * made public
     */
    messageReceived(message: ActionMessage): void;
}
//# sourceMappingURL=theia-diagram-server.d.ts.map