import { type Text, type Extension } from "@codemirror/state";
import { EditorView, type KeyBinding } from "@codemirror/view";
import { type LanguageDescription } from "@codemirror/language";
import { type I18n as TooltipPluginI18n } from "./plugins/tooltip";
import { type I18n as SlashPluginI18n } from "./plugins/slash";
interface I18n {
    tooltip?: TooltipPluginI18n;
    slash?: SlashPluginI18n;
    placeholder?: string;
}
export interface EditorConfig {
    root: Element | DocumentFragment | null;
    defaultValue?: string | Text;
    languages?: LanguageDescription[];
    themes?: Extension[];
    extensions?: Extension[];
    keymaps?: KeyBinding[];
    placeholder?: string;
    i18n?: I18n;
    onChange?: (value: string) => void;
}
export declare class MagicdownEditor {
    readonly EditorView: typeof EditorView;
    readonly root: Element | DocumentFragment | null;
    readonly defaultValue?: string | Text;
    extensions: Extension[];
    view?: EditorView;
    languages: LanguageDescription[];
    themes: Extension[];
    keymaps: KeyBinding[];
    i18n?: I18n;
    onChange?: (value: string) => void;
    status: "init" | "created" | "destroy";
    constructor(config: EditorConfig);
    create(): Promise<void>;
    get value(): string;
    update(value: string): this;
    use(plugin: Extension | Extension[]): this;
    destroy(): void;
}
export {};
//# sourceMappingURL=index.d.ts.map