import type * as d3 from 'd3';
import { Hook, IMarkmapOptions, INode, IPureNode } from 'markmap-common';
import { ID3SVGElement, IMarkmapState, IPadding } from './types';
export declare const globalCSS: string;
/**
 * A global hook to refresh all markmaps when called.
 */
export declare const refreshHook: Hook<[]>;
export declare class Markmap {
    options: IMarkmapOptions;
    state: IMarkmapState;
    svg: ID3SVGElement;
    styleNode: d3.Selection<HTMLStyleElement, INode, HTMLElement, INode>;
    g: d3.Selection<SVGGElement, INode, HTMLElement, INode>;
    observer: ResizeObserver;
    zoom: d3.ZoomBehavior<SVGElement, INode>;
    revokers: (() => void)[];
    constructor(svg: string | SVGElement | ID3SVGElement, opts?: Partial<IMarkmapOptions>);
    getStyleContent(): string;
    updateStyle(): void;
    handleZoom: (e: any) => void;
    handlePan: (e: WheelEvent) => void;
    toggleNode(data: INode, recursive?: boolean): Promise<void>;
    handleClick: (e: MouseEvent, d: INode) => void;
    private _initializeData;
    private _relayout;
    setOptions(opts?: Partial<IMarkmapOptions>): void;
    setData(data?: IPureNode | null, opts?: Partial<IMarkmapOptions>): Promise<void>;
    renderData(originData?: INode): Promise<void>;
    transition<T extends d3.BaseType, U, P extends d3.BaseType, Q>(sel: d3.Selection<T, U, P, Q>): d3.Transition<T, U, P, Q>;
    /**
     * Fit the content to the viewport.
     */
    fit(maxScale?: number): Promise<void>;
    findElement(node: INode): {
        data: INode;
        g: SVGGElement;
    } | undefined;
    /**
     * Pan the content to make the provided node visible in the viewport.
     */
    ensureView(node: INode, padding: Partial<IPadding> | undefined): Promise<void>;
    /**
     * Scale content with it pinned at the center of the viewport.
     */
    rescale(scale: number): Promise<void>;
    destroy(): void;
    static create(svg: string | SVGElement | ID3SVGElement, opts?: Partial<IMarkmapOptions>, data?: IPureNode | null): Markmap;
}
