import { EventEmitter, OnDestroy } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { BehaviorSubject, Observable } from 'rxjs';
import { NgmThemeService } from '@metad/ocap-angular/core';
import * as i0 from "@angular/core";
export declare class NgmBaseEditorDirective implements ControlValueAccessor, OnDestroy {
    readonly themeService: NgmThemeService;
    get editor(): any;
    protected editor$: BehaviorSubject<any>;
    theme: string;
    get options(): {};
    set options(value: {});
    private _options;
    textSelection: string;
    actions: any[];
    keyDown: Observable<void>;
    languageId: string;
    private defaultOptions;
    editorOptions: import("@angular/core").Signal<{
        theme: any;
        automaticLayout: boolean;
        language: string;
    }>;
    code: string;
    private _modelChange$;
    modelChange: Observable<any>;
    selectionChange: EventEmitter<{
        range: any;
        text: string;
    }>;
    private cursorSelection$;
    protected _providers: any[];
    protected _onChange: any;
    private valueSub;
    private cursorSelectionSub;
    onModelChange(event: any): void;
    onChange(event: any): void;
    writeValue(obj: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState?(isDisabled: boolean): void;
    onInit(editor: any): void;
    onResized(event: any): void;
    dispose(): void;
    formatDocument(): void;
    formatSelection(): void;
    compressDocument(): void;
    clearDocument(): void;
    startFindAction(): void;
    startFindReplaceAction(): void;
    insert(text: string, position?: any): void;
    undo(): void;
    redo(): void;
    getSelectText(): any;
    appendText(text: string): void;
    applyEdits(edits: any[]): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NgmBaseEditorDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<NgmBaseEditorDirective, "[ngmEditor]", never, { "theme": { "alias": "theme"; "required": false; }; "options": { "alias": "options"; "required": false; }; "textSelection": { "alias": "textSelection"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; }, { "keyDown": "keyDown"; "modelChange": "modelChange"; "selectionChange": "selectionChange"; }, never, never, false, never>;
}
