import { NgZone } from '@angular/core';
import { Observable } from 'rxjs';
import { EditorOptions, Language } from './options/editor-options.model';
import * as i0 from "@angular/core";
export interface IDisposable {
    dispose?: () => void;
}
export interface MonacoEditorModel {
    id?: string;
    modified?: unknown;
    original?: unknown;
    getValue?: () => string;
    setValue?: (value: string) => void;
    onDidChangeContent?: (f: () => void) => IDisposable;
}
export interface MonacoEditorControl extends IDisposable {
    setModel: (options: MonacoEditorModel) => void;
    getModel: () => MonacoEditorModel;
    trigger: (a: string, ation: string) => void;
    layout: () => void;
    updateOptions: (options: EditorOptions) => void;
}
export interface MonacoEditorApi {
    createModel: (value: string, language: Language) => MonacoEditorModel;
    create: (element: HTMLElement, options: EditorOptions) => MonacoEditorControl;
    createDiffEditor: (element: HTMLElement, options: EditorOptions) => MonacoEditorControl;
}
export interface MonacoApi {
    editor: MonacoEditorApi;
}
/**
 * Monaco Editor Service
 *
 * Service used by Monaco Editor Component to load only once instance of the Monaco Editor Library
 */
export declare class MonacoEditorService {
    monacoApi$: Observable<MonacoApi>;
    /**
     * Constructor
     */
    constructor(zone: NgZone);
    static ɵfac: i0.ɵɵFactoryDeclaration<MonacoEditorService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<MonacoEditorService>;
}
