import { AfterViewInit, EventEmitter, OnChanges, OnDestroy } from '@angular/core';
import { ControlValueAccessor, NgControl } from '@angular/forms';
import { MonacoEditorService } from './monaco-editor.service';
import { EditorScrollbarOptions } from './options/editor-scrollbar-options.model';
import * as i0 from "@angular/core";
export declare type Languages = 'bat' | 'c' | 'cpp' | 'csharp' | 'css' | 'dockerfile' | 'fsharp' | 'go' | 'handlebars' | 'html' | 'ini' | 'jade' | 'javascript' | 'json' | 'less' | 'lua' | 'markdown' | 'objective-c' | 'php' | 'plaintext' | 'postiats' | 'powershell' | 'python' | 'r' | 'razor' | 'ruby' | 'scss' | 'sql' | 'swift' | 'typescript' | 'vb' | 'xml' | 'yaml';
/**
 * Monaco Editor Component for Angular
 *
 * The Monaco Editor is the code editor that powers [VS Code](https://github.com/Microsoft/vscode), a good page describing the code editor's features is [here](https://code.visualstudio.com/docs/editor/editingevolved).
 */
export declare class DejaMonacoEditorComponent implements OnDestroy, AfterViewInit, OnChanges, ControlValueAccessor {
    private monacoEditorService;
    control: NgControl;
    /**
     * Enable experimental screen reader support.
     * Defaults to `true`.
     */
    experimentalScreenReader?: boolean;
    /**
     * The aria label for the editor's textarea (when it is focused).
     */
    ariaLabel?: string;
    /**
     * Render vertical lines at the specified columns.
     * Defaults to empty array.
     */
    rulers?: number[];
    /**
     * A string containing the word separators used when doing word navigation.
     * Defaults to `~!@#$%^&*()-=+[{]}\\|;:\'",.<>/?
     */
    wordSeparators?: string;
    /**
     * Enable Linux primary clipboard.
     * Defaults to `true`.
     */
    selectionClipboard?: boolean;
    /**
     * Control the rendering of line numbers.
     * If it is a function, it will be invoked when rendering a line number and the return value will be rendered.
     * Otherwise, if it is a truey, line numbers will be rendered normally (equivalent of using an identity function).
     * Otherwise, line numbers will not be rendered.
     * Defaults to `true`.
     */
    lineNumbers?: 'on' | 'off' | 'relative' | ((lineNumber: number) => string);
    /**
     * Should the corresponding line be selected when clicking on the line number?
     * Defaults to `true`.
     */
    selectOnLineNumbers?: boolean;
    /**
     * Control the width of line numbers, by reserving horizontal space for rendering at least an amount of digits.
     * Defaults to 5.
     */
    lineNumbersMinChars?: number;
    /**
     * Enable the rendering of the glyph margin.
     * Defaults to true in vscode and to false in monaco-editor.
     */
    glyphMargin?: boolean;
    /**
     * The width reserved for line decorations (in px).
     * Line decorations are placed between line numbers and the editor content.
     * You can pass in a string in the format floating point followed by "ch". e.g. 1.3ch.
     * Defaults to 10.
     */
    lineDecorationsWidth?: number;
    /**
     * When revealing the cursor, a virtual padding (px) is added to the cursor, turning it into a rectangle.
     * This virtual padding ensures that the cursor gets revealed before hitting the edge of the viewport.
     * Defaults to 30 (px).
     */
    revealHorizontalRightPadding?: number;
    /**
     * Render the editor selection with rounded borders.
     * Defaults to true.
     */
    roundedSelection?: boolean;
    /**
     * Theme to be used for rendering.
     * The current out-of-the-box available themes are: 'vs' (default), 'vs-dark', 'hc-black'.
     * You can create custom themes via `monaco.editor.defineTheme`.
     */
    theme?: string;
    /**
     * Should the editor be read only.
     * Defaults to false.
     */
    readOnly?: boolean;
    /**
     * Control the behavior and rendering of the scrollbars.
     */
    scrollbar?: EditorScrollbarOptions;
    /**
     * Display overflow widgets as `fixed`.
     * Defaults to `false`.
     */
    fixedOverflowWidgets?: boolean;
    /**
     * The number of vertical lanes the overview ruler should render.
     * Defaults to 2.
     */
    overviewRulerLanes?: number;
    /**
     * Control the cursor animation style, possible values are 'blink', 'smooth', 'phase', 'expand' and 'solid'.
     * Defaults to 'blink'.
     */
    cursorBlinking?: string;
    /**
     * Zoom the font in the editor when using the mouse wheel in combination with holding Ctrl.
     * Defaults to false.
     */
    mouseWheelZoom?: boolean;
    /**
     * Control the cursor style, either 'block' or 'line'.
     * Defaults to 'line'.
     */
    cursorStyle?: string;
    /**
     * Enable font ligatures.
     * Defaults to false.
     */
    fontLigatures?: boolean;
    /**
     * Disable the use of `translate3d`.
     * Defaults to false.
     */
    disableTranslate3d?: boolean;
    /**
     * Disable the optimizations for monospace fonts.
     * Defaults to false.
     */
    disableMonospaceOptimizations?: boolean;
    /**
     * Should the cursor be hidden in the overview ruler.
     * Defaults to false.
     */
    hideCursorInOverviewRuler?: boolean;
    /**
     * Enable that scrolling can go one screen size after the last line.
     * Defaults to true.
     */
    scrollBeyondLastLine?: boolean;
    /**
     * Enable that the editor will install an interval to check if its container dom node size has changed.
     * Enabling this might have a severe performance impact.
     * Defaults to false.
     */
    automaticLayout?: boolean;
    /**
     * Control the wrapping strategy of the editor.
     * Using -1 means no wrapping whatsoever.
     * Using 0 means viewport width wrapping (ajusts with the resizing of the editor).
     * Using a positive number means wrapping after a fixed number of characters.
     * Defaults to 300.
     */
    wrappingColumn?: number;
    /**
     * Control the alternate style of viewport wrapping.
     * When set to true viewport wrapping is used only when the window width is less than the number of columns specified in the wrappingColumn property. Has no effect if wrappingColumn is not a positive number.
     * Defaults to false.
     */
    wordWrap?: boolean;
    /**
     * Control indentation of wrapped lines. Can be: 'none', 'same' or 'indent'.
     * Defaults to 'same' in vscode and to 'none' in monaco-editor.
     */
    wrappingIndent?: string;
    /**
     * Configure word wrapping characters. A break will be introduced before these characters.
     * Defaults to '{([+'.
     */
    wordWrapBreakBeforeCharacters?: string;
    /**
     * Configure word wrapping characters. A break will be introduced after these characters.
     * Defaults to ' \t})]?|&,;'.
     */
    wordWrapBreakAfterCharacters?: string;
    /**
     * Configure word wrapping characters. A break will be introduced after these characters only if no `wordWrapBreakBeforeCharacters` or `wordWrapBreakAfterCharacters` were found.
     * Defaults to '.'.
     */
    wordWrapBreakObtrusiveCharacters?: string;
    /**
     * Performance guard: Stop rendering a line after x characters.
     * Defaults to 10000 if wrappingColumn is -1. Defaults to -1 if wrappingColumn is >= 0.
     * Use -1 to never stop rendering
     */
    stopRenderingLineAfter?: number;
    /**
     * Enable hover.
     * Defaults to true.
     */
    hover?: boolean;
    /**
     * Enable custom contextmenu.
     * Defaults to true.
     */
    contextmenu?: boolean;
    /**
     * A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.
     * Defaults to 1.
     */
    mouseWheelScrollSensitivity?: number;
    /**
     * Enable quick suggestions (shadow suggestions)
     * Defaults to true.
     */
    quickSuggestions?: boolean;
    /**
     * Quick suggestions show delay (in ms)
     * Defaults to 500 (ms)
     */
    quickSuggestionsDelay?: number;
    /**
     * Enables parameter hints
     */
    parameterHints?: boolean;
    /**
     * Render icons in suggestions box.
     * Defaults to true.
     */
    iconsInSuggestions?: boolean;
    /**
     * Enable auto closing brackets.
     * Defaults to true.
     */
    autoClosingBrackets?: boolean;
    /**
     * Enable format on type.
     * Defaults to false.
     */
    formatOnType?: boolean;
    /**
     * Enable format on paste.
     * Defaults to false.
     */
    formatOnPaste?: boolean;
    /**
     * Enable the suggestion box to pop-up on trigger characters.
     * Defaults to true.
     */
    suggestOnTriggerCharacters?: boolean;
    /**
     * Accept suggestions on ENTER.
     * Defaults to true.
     */
    acceptSuggestionOnEnter?: boolean;
    /**
     * Accept suggestions on provider defined characters.
     * Defaults to true.
     */
    acceptSuggestionOnCommitCharacter?: boolean;
    /**
     * Enable snippet suggestions. Default to 'true'.
     */
    snippetSuggestions?: 'top' | 'bottom' | 'inline' | 'none';
    /**
     * Copying without a selection copies the current line.
     */
    emptySelectionClipboard?: boolean;
    /**
     * Enable tab completion. Defaults to 'false'
     */
    tabCompletion?: boolean;
    /**
     * Enable word based suggestions. Defaults to 'true'
     */
    wordBasedSuggestions?: boolean;
    /**
     * The font size for the suggest widget.
     * Defaults to the editor font size.
     */
    suggestFontSize?: number;
    /**
     * The line height for the suggest widget.
     * Defaults to the editor line height.
     */
    suggestLineHeight?: number;
    /**
     * Enable selection highlight.
     * Defaults to true.
     */
    selectionHighlight?: boolean;
    /**
     * Show code lens
     * Defaults to true.
     */
    codeLens?: boolean;
    /**
     * Enable code folding
     * Defaults to true in vscode and to false in monaco-editor.
     */
    folding?: boolean;
    /**
     * Enable rendering of whitespace.
     * Defaults to none.
     */
    renderWhitespace?: 'none' | 'boundary' | 'all';
    /**
     * Enable rendering of control characters.
     * Defaults to false.
     */
    renderControlCharacters?: boolean;
    /**
     * Enable rendering of indent guides.
     * Defaults to false.
     */
    renderIndentGuides?: boolean;
    /**
     * Enable rendering of current line highlight.
     * Defaults to all.
     */
    renderLineHighlight?: 'none' | 'gutter' | 'line' | 'all';
    /**
     * Inserting and deleting whitespace follows tab stops.
     */
    useTabStops?: boolean;
    /**
     * The font family
     */
    fontFamily?: string;
    /**
     * The font weight
     */
    fontWeight?: 'normal' | 'bold' | 'bolder' | 'lighter' | 'initial' | 'inherit' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';
    /**
     * The font size
     */
    fontSize?: number;
    /**
     * The line height
     */
    lineHeight?: number;
    /**
     * Enable the diff editor mode
     */
    isDiffEditor: boolean;
    /**
     * Content language
     */
    set language(val: 'bat' | 'c' | 'cpp' | 'csharp' | 'css' | 'dockerfile' | 'fsharp' | 'go' | 'handlebars' | 'html' | 'ini' | 'jade' | 'javascript' | 'json' | 'less' | 'lua' | 'markdown' | 'objective-c' | 'php' | 'plaintext' | 'postiats' | 'powershell' | 'python' | 'r' | 'razor' | 'ruby' | 'scss' | 'sql' | 'swift' | 'typescript' | 'vb' | 'xml' | 'yaml');
    /**
     * Value to compare with the Value input
     * Used only when `isDiffEditor` is set to `true`
     */
    set valueToCompare(v: string);
    /**
     * Value to show in the editor
     */
    set value(v: string);
    /**
     * Event triggered when value change
     */
    readonly valueChange: EventEmitter<any>;
    /**
     * Event triggered when valueToCompare change
     */
    readonly valueToCompareChange: EventEmitter<any>;
    /**
     * Event triggered when editor is initialized
     */
    readonly onInit: EventEmitter<any>;
    private editorContent;
    private _editor;
    private _value;
    private _valueToCompare;
    private _language;
    /**
     * Constructor
     */
    constructor(monacoEditorService: MonacoEditorService, control: NgControl);
    /**
* Triggered when windows is resized
* Resize the component
*/
    onResize(): void;
    /**
     * Load Monaco Editor library
     */
    ngAfterViewInit(): void;
    /**
     * Lifecycle hook that is called when a directive, pipe or service is destroyed.
     */
    ngOnDestroy(): void;
    /**
     * Lifecycle hook that is called when any data-bound property of a directive changes.
     */
    ngOnChanges(): void;
    /** From ControlValueAccessor interface */
    writeValue(value: string): void;
    /** From ControlValueAccessor interface */
    registerOnChange(fn: (_a: unknown) => void): void;
    /** From ControlValueAccessor interface */
    registerOnTouched(fn: () => void): void;
    /**
     * Destroy the monaco component
     */
    dispose(): void;
    onTouchedCallback: () => void;
    onChangeCallback: (_: string) => void;
    /**
     * Init the component
     */
    private initEditor;
    /**
     * Create a simple editor text
     * @param div
     * @param options
     * @return instance of monaco
     */
    private initSimpleEditor;
    /**
     * Create a diff editor to compare two string (_value and _valueToCompare)
     * @param div
     * @return instance of monaco
     */
    private initDiffEditor;
    private getOptions;
    /**
     * UpdateValue
     *
     * @param value
     */
    private updateValue;
    /**
     * UpdateValue
     *
     * @param value
     */
    private updateValueToCompare;
    private getOriginalModel;
    private getModifiedModel;
    static ɵfac: i0.ɵɵFactoryDeclaration<DejaMonacoEditorComponent, [null, { optional: true; self: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DejaMonacoEditorComponent, "deja-monaco-editor", never, { "experimentalScreenReader": "experimentalScreenReader"; "ariaLabel": "ariaLabel"; "rulers": "rulers"; "wordSeparators": "wordSeparators"; "selectionClipboard": "selectionClipboard"; "lineNumbers": "lineNumbers"; "selectOnLineNumbers": "selectOnLineNumbers"; "lineNumbersMinChars": "lineNumbersMinChars"; "glyphMargin": "glyphMargin"; "lineDecorationsWidth": "lineDecorationsWidth"; "revealHorizontalRightPadding": "revealHorizontalRightPadding"; "roundedSelection": "roundedSelection"; "theme": "theme"; "readOnly": "readOnly"; "scrollbar": "scrollbar"; "fixedOverflowWidgets": "fixedOverflowWidgets"; "overviewRulerLanes": "overviewRulerLanes"; "cursorBlinking": "cursorBlinking"; "mouseWheelZoom": "mouseWheelZoom"; "cursorStyle": "cursorStyle"; "fontLigatures": "fontLigatures"; "disableTranslate3d": "disableTranslate3d"; "disableMonospaceOptimizations": "disableMonospaceOptimizations"; "hideCursorInOverviewRuler": "hideCursorInOverviewRuler"; "scrollBeyondLastLine": "scrollBeyondLastLine"; "automaticLayout": "automaticLayout"; "wrappingColumn": "wrappingColumn"; "wordWrap": "wordWrap"; "wrappingIndent": "wrappingIndent"; "wordWrapBreakBeforeCharacters": "wordWrapBreakBeforeCharacters"; "wordWrapBreakAfterCharacters": "wordWrapBreakAfterCharacters"; "wordWrapBreakObtrusiveCharacters": "wordWrapBreakObtrusiveCharacters"; "stopRenderingLineAfter": "stopRenderingLineAfter"; "hover": "hover"; "contextmenu": "contextmenu"; "mouseWheelScrollSensitivity": "mouseWheelScrollSensitivity"; "quickSuggestions": "quickSuggestions"; "quickSuggestionsDelay": "quickSuggestionsDelay"; "parameterHints": "parameterHints"; "iconsInSuggestions": "iconsInSuggestions"; "autoClosingBrackets": "autoClosingBrackets"; "formatOnType": "formatOnType"; "formatOnPaste": "formatOnPaste"; "suggestOnTriggerCharacters": "suggestOnTriggerCharacters"; "acceptSuggestionOnEnter": "acceptSuggestionOnEnter"; "acceptSuggestionOnCommitCharacter": "acceptSuggestionOnCommitCharacter"; "snippetSuggestions": "snippetSuggestions"; "emptySelectionClipboard": "emptySelectionClipboard"; "tabCompletion": "tabCompletion"; "wordBasedSuggestions": "wordBasedSuggestions"; "suggestFontSize": "suggestFontSize"; "suggestLineHeight": "suggestLineHeight"; "selectionHighlight": "selectionHighlight"; "codeLens": "codeLens"; "folding": "folding"; "renderWhitespace": "renderWhitespace"; "renderControlCharacters": "renderControlCharacters"; "renderIndentGuides": "renderIndentGuides"; "renderLineHighlight": "renderLineHighlight"; "useTabStops": "useTabStops"; "fontFamily": "fontFamily"; "fontWeight": "fontWeight"; "fontSize": "fontSize"; "lineHeight": "lineHeight"; "isDiffEditor": "isDiffEditor"; "language": "language"; "valueToCompare": "valueToCompare"; "value": "value"; }, { "valueChange": "valueChange"; "valueToCompareChange": "valueToCompareChange"; "onInit": "onInit"; }, never, never>;
}
