import * as monaco from 'monaco-editor';
import { GrammerMappingEntry, GrammerMappingType, MonacoLanguages } from '../languages/languages';
import { AbstractStore, AbstractStoreListener } from '@journeyapps-labs/reactor-mod';
export interface MonacoEditorType extends monaco.editor.IStandaloneCodeEditor {
    _standaloneKeybindingService: {
        updateResolver(): any;
    };
    _actions: Map<string, {
        id: string;
        label: string;
    }>;
    _commandService: {
        executeCommand(id: string, ...args: any[]): Promise<any>;
    };
}
export interface MonacoStoreListener extends AbstractStoreListener {
    gotEditor: (editor: MonacoEditorType) => any;
}
export declare class MonacoStore extends AbstractStore<void, MonacoStoreListener> {
    editors: {
        [id: string]: MonacoEditorType;
    };
    focusedEditor: MonacoEditorType;
    languages: GrammerMappingType;
    enabledLanguages: MonacoLanguages[];
    constructor();
    registerLanguage(key: string, language: GrammerMappingEntry): void;
    enableLanguages(languages: MonacoLanguages[]): void;
    getLanguage(languageID: MonacoLanguages): GrammerMappingEntry;
    getLanguageScope(languageID: MonacoLanguages): string;
    init(): Promise<boolean>;
    createHeadlessEditorInstance(): Promise<{
        editor: MonacoEditorType;
        dispose: () => any;
    }>;
    registerEditor(editor: MonacoEditorType): void;
    deregisterEditor(editor: monaco.editor.IEditor): void;
}
