import { EventEmitter, OnInit, ElementRef, ChangeDetectorRef, OnDestroy, NgZone } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { Observable } from 'rxjs';
import { editor } from 'monaco-editor/esm/vs/editor/editor.api';
import * as i0 from "@angular/core";
export declare class TdCodeEditorBase {
    _changeDetectorRef: ChangeDetectorRef;
    constructor(_changeDetectorRef: ChangeDetectorRef);
}
export declare const _TdCodeEditorMixinBase: (new (...args: any[]) => import("@covalent/core/common").IControlValueAccessor) & (new (...args: any[]) => import("@covalent/core/common").ICanDisable) & typeof TdCodeEditorBase;
export declare class TdCodeEditorComponent extends _TdCodeEditorMixinBase implements OnInit, ControlValueAccessor, OnDestroy {
    private _elementRef;
    private _ngZone;
    private platformId;
    private _destroy;
    private _widthSubject;
    private _heightSubject;
    private _editorStyle;
    private _value;
    private _theme;
    private _language;
    private _subject;
    private _editorInnerContainer;
    private _editor;
    private _fromEditor;
    private _componentInitialized;
    private _editorOptions;
    private _isFullScreen;
    private _keycode;
    private _registeredLanguagesStyles;
    private _disposables;
    _editorContainer: ElementRef;
    /**
     * editorInitialized: function($event)
     * Event emitted when editor is first initialized
     */
    editorInitialized: EventEmitter<editor.IStandaloneCodeEditor>;
    /**
     * editorConfigurationChanged: function($event)
     * Event emitted when editor's configuration changes
     */
    editorConfigurationChanged: EventEmitter<void>;
    /**
     * editorLanguageChanged: function($event)
     * Event emitted when editor's Language changes
     */
    editorLanguageChanged: EventEmitter<void>;
    /**
     * editorValueChange: function($event)
     * Event emitted any time something changes the editor value
     */
    editorValueChange: EventEmitter<void>;
    propagateChange: (_: any) => () => void;
    /**
     * value?: string
     */
    set value(value: string);
    get value(): string;
    applyValue(): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    /**
     * getEditorContent?: function
     * Returns the content within the editor
     */
    getValue(): Observable<string>;
    /**
     * language?: string
     * language used in editor
     */
    set language(language: string);
    get language(): string;
    applyLanguage(): void;
    /**
     * registerLanguage?: function
     * Registers a custom Language within the editor
     */
    registerLanguage(language: any): void;
    /**
     * style?: string
     * css style of the editor on the page
     */
    set editorStyle(editorStyle: string);
    get editorStyle(): string;
    applyStyle(): void;
    /**
     * theme?: string
     * Theme to be applied to editor
     */
    set theme(theme: string);
    get theme(): string;
    /**
     * fullScreenKeyBinding?: number
     * See here for key bindings https://microsoft.github.io/monaco-editor/api/enums/keycode.html
     * Sets the KeyCode for shortcutting to Fullscreen mode
     */
    set fullScreenKeyBinding(keycode: number[]);
    get fullScreenKeyBinding(): number[];
    /**
     * editorOptions?: object
     * Options used on editor instantiation. Available options listed here:
     * https://microsoft.github.io/monaco-editor/api/interfaces/editor.ieditoroptions.html
     */
    set editorOptions(editorOptions: any);
    get editorOptions(): any;
    /**
     * layout method that calls layout method of editor and instructs the editor to remeasure its container
     */
    layout(): void;
    /**
     * Returns if in Full Screen Mode or not
     */
    get isFullScreen(): boolean;
    constructor(_changeDetectorRef: ChangeDetectorRef, _elementRef: ElementRef<HTMLElement>, _ngZone: NgZone, platformId: string);
    ngOnInit(): void;
    ngOnDestroy(): void;
    /**
     * showFullScreenEditor request for full screen of Code Editor based on its browser type.
     */
    showFullScreenEditor(): void;
    /**
     * exitFullScreenEditor request to exit full screen of Code Editor based on its browser type.
     */
    exitFullScreenEditor(): void;
    /**
     * addFullScreenModeCommand used to add the fullscreen option to the context menu
     */
    private addFullScreenModeCommand;
    static ɵfac: i0.ɵɵFactoryDeclaration<TdCodeEditorComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TdCodeEditorComponent, "td-code-editor", never, { "value": { "alias": "value"; "required": false; }; "language": { "alias": "language"; "required": false; }; "editorStyle": { "alias": "editorStyle"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "fullScreenKeyBinding": { "alias": "fullScreenKeyBinding"; "required": false; }; "editorOptions": { "alias": "editorOptions"; "required": false; }; }, { "editorInitialized": "editorInitialized"; "editorConfigurationChanged": "editorConfigurationChanged"; "editorLanguageChanged": "editorLanguageChanged"; "editorValueChange": "editorValueChange"; }, never, never, true, never>;
}
