/// <reference types="monaco-editor/monaco" />
import { AfterViewInit, Injector, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { SimplePropertySchemaFieldLoaderComponent } from '../../../schema/schema-field-host.component';
import { SmeInternalFormFieldComponent } from '../form-field.component';
import * as i0 from "@angular/core";
export declare class CodeFormFieldLoaderComponent extends SimplePropertySchemaFieldLoaderComponent {
    static ɵfac: i0.ɵɵFactoryDeclaration<CodeFormFieldLoaderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CodeFormFieldLoaderComponent, "ng-component", never, {}, {}, never, never, false, never>;
}
/**
 * Accessible text field implementation
 */
export declare class CodeFormFieldComponent extends SmeInternalFormFieldComponent<string> implements OnInit, AfterViewInit, OnDestroy, OnChanges {
    /**
     * The source name to use for logging
     */
    protected get logSourceName(): string;
    /**
     * The language of the code in the editor
     */
    language: string;
    /**
     * The monaco editor construction options. When provided, overrides the default behaviors of this control
     */
    options: monaco.editor.IStandaloneEditorConstructionOptions;
    /**
     * The current monaco editor instance
     */
    get editor(): monaco.editor.IStandaloneCodeEditor;
    /**
     * The current monaco editor instance
     */
    get model(): monaco.editor.ITextModel;
    /**
     * Reference to the element that we use to contain the monaco text editor
     */
    private editorHost;
    /**
     * internal placeholder for the current monaco editor instance.
     */
    private internalEditor;
    /**
     * Tracking mechanism for subscriptions for the current editor instance
     */
    private editorSubscriptions;
    /**
     * Initializes a new instance of the TextFormFieldComponent
     */
    constructor(injector: Injector);
    /**
     * Implementation of angular AfterViewInit interface
     */
    ngAfterViewInit(): void;
    /**
     * Implementation of angular OnChanges interface
     */
    ngOnChanges(changes: SimpleChanges): void;
    /**
     * Implementation of angular OnDestroy interface
     */
    ngOnDestroy(): void;
    /**
     * Keydown handler for this form field
     */
    onKeyDown(event: KeyboardEvent): void;
    /**
     * Scrolls and centers to a given position within the editor
     * @param position The @see monaco.IPosition to scroll to
     */
    scrollTo(position: monaco.IPosition): void;
    /**
     * Finds a range from a starting keyword to an ending keyword.
     */
    findKeyword(keyword: string): monaco.Range;
    /**
     * Finds a range from a starting keyword to an ending keyword.
     */
    findKeywordRange(startKeyword: string, endKeyword: string): monaco.Range;
    /**
     * Creates the idBag used by this component to store unique element ids.
     * id values will be assigned be the @see BaseComponent super class.
     */
    protected createIdBag(): MsftSme.StringMap<string>;
    /**
     * Applies the focus to this form control
     */
    focus(): void;
    /**
     * When ngModel's value changes, update the editors value to reflect it
     */
    protected onValueChanged(value: string): void;
    /**
     * On layout changed event handler, occurs every time the layout has been changed.
     */
    protected onLayoutChanged(): void;
    /**
    * Occurs every time the orientation has been changed.
    */
    protected onOrientationChanged(): void;
    /**
     * Initializes the monaco editor
     */
    private createEditor;
    /**
     * Creates new construction options for the editor based on the current inputs to this control
     */
    private createEditorConstructionOptions;
    /**
     * Occurs when the editor is created or recreated
     */
    private onEditorCreated;
    /**
     * Occurs when the editors content has changed.
     * @param event the @see monaco.editor.IModelContentChangedEvent event object
     */
    private onEditorContentChanged;
    /**
     * Occurs when the editor is being disposed
     */
    private disposeEditor;
    static ɵfac: i0.ɵɵFactoryDeclaration<CodeFormFieldComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CodeFormFieldComponent, "sme-form-field[type=\"code\"]", never, { "language": "language"; "options": "options"; }, {}, never, never, false, never>;
}
