import { Ref, ShallowRef, ComputedRef } from 'vue';
import { Renderer } from '../core';
import * as monaco from "monaco-editor/esm/vs/editor/editor.api.js";
export interface EditorProps {
    /**
     * Markdown 渲染器，可以为 MarkdownIt 的实例。
     *
     * @default "rich"
     */
    renderer?: Renderer;
    /**
     * 渲染函数的防抖（毫秒）。
     *
     * @default 500
     */
    debounce?: number;
    /**
     * 是否同步滚动。
     *
     * @default true
     */
    scrollSynced?: boolean;
}
export declare function useEditor(content: Ref<string>, props: Required<EditorProps>): {
    editor: ShallowRef<monaco.editor.IStandaloneCodeEditor | null, monaco.editor.IStandaloneCodeEditor | null>;
    editorRef: ShallowRef<HTMLElement | undefined, HTMLElement | undefined>;
    debouncedContent: Readonly<Ref<string, string>>;
    computedScrollSynced: ComputedRef<boolean>;
    editorRenderer: ComputedRef<{
        render(text: string, env: object): string;
    }>;
    selection: ShallowRef<{
        start: number;
        count: number;
        startLineNumber: number;
        startColumn: number;
        endLineNumber: number;
        endColumn: number;
    }, {
        start: number;
        count: number;
        startLineNumber: number;
        startColumn: number;
        endLineNumber: number;
        endColumn: number;
    }>;
};
export declare function useEditorSelection(editor: ShallowRef<monaco.editor.IStandaloneCodeEditor | null>): ShallowRef<{
    start: number;
    count: number;
    startLineNumber: number;
    startColumn: number;
    endLineNumber: number;
    endColumn: number;
}, {
    start: number;
    count: number;
    startLineNumber: number;
    startColumn: number;
    endLineNumber: number;
    endColumn: number;
}>;
