import { PropertyValueMap } from "lit";
import { FRoot, FButton } from "@nonfx/flow-core";
import * as monaco from "monaco-editor";
export type FCodeEditorLanguage = "scala" | "python" | "json" | "css" | "scss" | "less" | "html" | "yaml" | "javascript" | "typescript";
export type FCodeEditorSettings = monaco.editor.IStandaloneEditorConstructionOptions;
export type FCodeEditorServices = monaco.editor.IStandaloneEditorConstructionOptions;
export type FCodeEditorStateProp = "subtle" | "default" | "secondary";
export declare class FCodeEditor extends FRoot {
    /**
     * css loaded from scss file
     */
    static styles: import("lit").CSSResult[];
    /**
     * editor instance
     */
    editor?: monaco.editor.IStandaloneCodeEditor;
    /**
     * actual code to display in editor
     */
    code?: string;
    /**
     * @attribute header title
     */
    title: string;
    /**
     * @attribute state property defines the background color.
     */
    state?: FCodeEditorStateProp;
    /**
     * language of code
     */
    language?: FCodeEditorLanguage;
    /**
     * height to is required to create editor
     */
    height?: string;
    /**
     * width to is required to create editor
     */
    width?: string;
    settings?: FCodeEditorSettings;
    services?: FCodeEditorServices;
    /**
     * @attribute comments toggle actions
     */
    comments?: boolean;
    /**
     * @attribute copy on click action
     */
    copyButton?: boolean;
    /**
     * @attribute show line no.
     */
    showLineNumbers?: boolean;
    /**
     * @attribute read-only-mode
     */
    readOnly?: boolean;
    copyCodeButton?: FButton;
    removedCommentsMap: Map<number, string>;
    get dymanicWidth(): "hug-content" | "100%";
    get fixedLang(): FCodeEditorLanguage;
    multiLineStart(startIndex: number, endIndex: number, line: string): string;
    multiLineEnd(endIndex: number, line: string): {
        code: string;
        insideMultiLine: boolean;
    };
    addNewLine(modifiedLine: string, newLines: string[]): void;
    toggleComments(): void;
    restoreComments(): void;
    errorMessageOnCopy(): void;
    successMessageOnCopy(): void;
    copyCodeToClipboard(): void;
    handleChange(e: CustomEvent<{
        value: unknown;
    }>): void;
    /**
     * monoco editor never works in shadow dom
     */
    createRenderRoot(): this;
    render(): "" | import("lit-html").TemplateResult<1>;
    protected willUpdate(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
    protected updated(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
}
/**
 * Required for typescript
 */
declare global {
    export interface HTMLElementTagNameMap {
        "f-code-editor": FCodeEditor;
    }
}
