import './index.less';
import './markdown.css';
import { LEFT, RIGHT, SIDE, DARK_THEME, THEME } from './const';
import type { MindElixirData, MindElixirInstance, MindElixirMethods, Options } from './types/index';
import type { Topic } from './docs';
declare function MindElixir(this: MindElixirInstance, { el, direction, editable, contextMenu, toolBar, keypress, mouseSelectionButton, selectionContainer, before, newTopicName, allowUndo, generateMainBranch, generateSubBranch, overflowHidden, theme, alignment, scaleSensitivity, scaleMax, scaleMin, handleWheel, markdown, imageProxy, pasteHandler, }: Options): void;
declare namespace MindElixir {
    export var prototype: {
        init(this: MindElixirInstance, data: MindElixirData): Error | undefined;
        destroy(this: Partial<MindElixirInstance>): void;
        exportSvg: (this: MindElixirInstance, noForeignObject?: boolean, injectCss?: string) => Blob;
        exportPng: (this: MindElixirInstance, noForeignObject?: boolean, injectCss?: string) => Promise<Blob | null>;
        createSummary: (this: MindElixirInstance, options?: import("./summary").SummaryOptions) => void;
        createSummaryFrom: (this: MindElixirInstance, summary: Omit<import("./summary").Summary, "id">) => void;
        removeSummary: (this: MindElixirInstance, id: string) => void;
        selectSummary: (this: MindElixirInstance, el: import("./summary").SummarySvgGroup) => void;
        unselectSummary: (this: MindElixirInstance) => void;
        renderSummary: (this: MindElixirInstance) => void;
        editSummary: (this: MindElixirInstance, el: import("./summary").SummarySvgGroup) => void;
        renderArrow(this: MindElixirInstance): void;
        editArrowLabel(this: MindElixirInstance, el: import("./docs").CustomSvg): void;
        tidyArrow(this: MindElixirInstance): void;
        createArrow: (this: MindElixirInstance, from: Topic, to: Topic, options?: import("./arrow").ArrowOptions) => void;
        createArrowFrom: (this: MindElixirInstance, arrow: Omit<import("./arrow").Arrow, "id">) => void;
        removeArrow: (this: MindElixirInstance, linkSvg?: import("./docs").CustomSvg) => void;
        selectArrow: (this: MindElixirInstance, link: import("./docs").CustomSvg) => void;
        unselectArrow: (this: MindElixirInstance) => void;
        rmSubline: (this: MindElixirInstance, tpc: Topic) => Promise<void>;
        reshapeNode: (this: MindElixirInstance, tpc: Topic, patchData: Partial<import("./docs").NodeObj<unknown>>) => Promise<void>;
        insertSibling: (this: MindElixirInstance, type: "before" | "after", el?: Topic | undefined, node?: import("./docs").NodeObj<unknown> | undefined) => Promise<void>;
        insertParent: (this: MindElixirInstance, el?: Topic | undefined, node?: import("./docs").NodeObj<unknown> | undefined) => Promise<void>;
        addChild: (this: MindElixirInstance, el?: Topic | undefined, node?: import("./docs").NodeObj<unknown> | undefined) => Promise<void>;
        copyNode: (this: MindElixirInstance, node: Topic, to: Topic) => Promise<void>;
        copyNodes: (this: MindElixirInstance, tpcs: Topic[], to: Topic) => Promise<void>;
        moveUpNode: (this: MindElixirInstance, el?: Topic | undefined) => Promise<void>;
        moveDownNode: (this: MindElixirInstance, el?: Topic | undefined) => Promise<void>;
        removeNodes: (this: MindElixirInstance, tpcs: Topic[]) => Promise<void>;
        moveNodeIn: (this: MindElixirInstance, from: Topic[], to: Topic) => Promise<void>;
        moveNodeBefore: (this: MindElixirInstance, from: Topic[], to: Topic) => Promise<void>;
        moveNodeAfter: (this: MindElixirInstance, from: Topic[], to: Topic) => Promise<void>;
        beginEdit: (this: MindElixirInstance, el?: Topic | undefined) => Promise<void>;
        setNodeTopic: (this: MindElixirInstance, el: Topic, topic: string) => Promise<void>;
        scrollIntoView: (this: MindElixirInstance, el: HTMLElement) => void;
        selectNode: (this: MindElixirInstance, tpc: Topic, isNewNode?: boolean, e?: MouseEvent) => void;
        selectNodes: (this: MindElixirInstance, tpcs: Topic[]) => void;
        unselectNodes: (this: MindElixirInstance, tpcs: Topic[]) => void;
        clearSelection: (this: MindElixirInstance) => void;
        stringifyData: (data: object) => string;
        getDataString: (this: MindElixirInstance) => string;
        getData: (this: MindElixirInstance) => MindElixirData;
        enableEdit: (this: MindElixirInstance) => void;
        disableEdit: (this: MindElixirInstance) => void;
        scale: (this: MindElixirInstance, scaleVal: number, offset?: {
            x: number;
            y: number;
        }) => void;
        scaleFit: (this: MindElixirInstance) => void;
        move: (this: MindElixirInstance, dx: number, dy: number, smooth?: boolean) => void;
        toCenter: (this: MindElixirInstance) => void;
        install: (this: MindElixirInstance, plugin: (instance: MindElixirInstance) => void) => void;
        focusNode: (this: MindElixirInstance, el: Topic) => void;
        cancelFocus: (this: MindElixirInstance) => void;
        initLeft: (this: MindElixirInstance) => void;
        initRight: (this: MindElixirInstance) => void;
        initSide: (this: MindElixirInstance) => void;
        expandNode: (this: MindElixirInstance, el: Topic, isExpand?: boolean) => void;
        expandNodeAll: (this: MindElixirInstance, el: Topic, isExpand?: boolean) => void;
        refresh: (this: MindElixirInstance, data?: MindElixirData) => void;
        getObjById: (id: string, data: import("./docs").NodeObj) => import("./docs").NodeObj | null;
        generateNewObj: (this: MindElixirInstance) => import("./docs").NodeObjExport;
        layout: (this: MindElixirInstance) => void;
        linkDiv: (this: MindElixirInstance, mainNode?: import("./docs").Wrapper) => void;
        editTopic: (this: MindElixirInstance, el: Topic) => void;
        createWrapper: (this: MindElixirInstance, nodeObj: import("./docs").NodeObj, omitChildren?: boolean) => {
            grp: import("./docs").Wrapper;
            top: import("./docs").Parent;
            tpc: Topic;
        };
        createParent: (this: MindElixirInstance, nodeObj: import("./docs").NodeObj) => {
            p: import("./docs").Parent;
            tpc: Topic;
        };
        createChildren: (this: MindElixirInstance, wrappers: import("./docs").Wrapper[]) => import("./docs").Children;
        createTopic: (this: MindElixirInstance, nodeObj: import("./docs").NodeObj) => Topic;
        findEle: (this: MindElixirInstance, id: string, el?: HTMLElement) => Topic;
        changeTheme: (this: MindElixirInstance, theme: import("./docs").Theme, shouldRefresh?: boolean) => void;
    };
    export var LEFT: number;
    export var RIGHT: number;
    export var SIDE: number;
    export var THEME: import("./docs").Theme;
    export var DARK_THEME: import("./docs").Theme;
    export var version: string;
    export var E: (this: MindElixirInstance, id: string, el?: HTMLElement) => Topic;
    var _a: (topic: string) => MindElixirData;
    export { _a as new };
}
export interface MindElixirCtor {
    new (options: Options): MindElixirInstance;
    E: (id: string, el?: HTMLElement) => Topic;
    new: typeof MindElixir.new;
    version: string;
    LEFT: typeof LEFT;
    RIGHT: typeof RIGHT;
    SIDE: typeof SIDE;
    THEME: typeof THEME;
    DARK_THEME: typeof DARK_THEME;
    prototype: MindElixirMethods;
}
declare const _default: MindElixirCtor;
export default _default;
export { LEFT, RIGHT, SIDE, THEME, DARK_THEME };
export type * from './utils/pubsub';
export type * from './types/index';
export type * from './types/dom';
