/**
 * Listens to changes on a tree and updates the GUI tree in response to changes.
 * @author Louis-Dominique Dubeau
 * @license MPL 2.0
 * @copyright Mangalam Research Center for Buddhist Languages
 */
import { DLoc } from "./dloc";
import { TreeUpdater } from "./tree-updater";
/**
 * Updates a GUI tree so that its data nodes (those nodes that are not
 * decorations) mirror a data tree.
 */
export declare class GUIUpdater extends TreeUpdater {
    private readonly treeUpdater;
    private readonly haveTooltips;
    /**
     * @param guiTree The DOM tree to update.
     *
     * @param treeUpdater A tree updater that updates the data tree. It serves as
     * a source of modification events which the object being created will listen
     * on.
     */
    constructor(guiTree: Element, treeUpdater: TreeUpdater);
    /**
     * Handles "InsertNodeAt" events.
     *
     * @param ev The event.
     */
    private _insertNodeAtHandler;
    /**
     * Handles "SetTextNodeValue" events.
     *
     * @param ev The event.
     */
    private _setTextNodeValueHandler;
    /**
     * Handles "BeforeDeleteNode" events.
     *
     * @param ev The event.
     */
    private _beforeDeleteNodeHandler;
    /**
     * Handles "SetAttributeNS" events.
     *
     * @param ev The event.
     */
    private _setAttributeNSHandler;
    /**
     * Converts a data location to a GUI location.
     *
     * @param loc The location.
     *
     * @returns The GUI location.
     */
    fromDataLocation(loc: DLoc): DLoc | null;
    fromDataLocation(node: Node, offset: number): DLoc | null;
    /**
     * Check whether a tooltip should be destroyed when the element is removed
     * from the tree. This function checks whether the element or any descendant
     * has a tooltip.
     *
     * @param el An element to check.
     *
     */
    removeTooltips(el: Element): void;
}
