/**
 * Dispatches `Interaction` objects through the view hierarchy and synthesizes
 * subtree-level pointer transition events.
 *
 * The dispatcher keeps track of the previously hovered target path and
 * compares it with the current one on every `mousemove`. From that diff it
 * emits:
 * - `mouseleave` for views that are no longer in the pointed subtree
 * - `mouseenter` for views that have newly entered the pointed subtree
 *
 * This is intentionally closer to `mouseenter` / `mouseleave` semantics than
 * DOM `mouseover` / `mouseout`. Moving between descendants inside the same
 * subtree does not cause the ancestor to leave and re-enter.
 *
 * `dispatch()` handles ordinary event propagation and updates the current
 * pointed target. `handlePointerLeave()` is used when the pointer leaves the
 * canvas entirely, in which case the dispatcher emits `mouseleave` for the
 * whole previously hovered path and clears its tracked state.
 *
 * The dispatcher does not do hit testing itself. It relies on views to route
 * the incoming interaction and set `interaction.target` during propagation.
 */
export default class InteractionDispatcher {
    /**
     * @param {object} options
     * @param {import("../view/view.js").default} options.viewRoot
     */
    constructor({ viewRoot }: {
        viewRoot: import("../view/view.js").default;
    });
    /**
     * Dispatches an interaction through the view tree and updates the tracked
     * hover path for transition synthesis.
     *
     * @param {import("../view/layout/point.js").default} point
     * @param {import("../utils/interactionEvent.js").InteractionUiEvent} uiEvent
     * @returns {Interaction}
     */
    dispatch(point: import("../view/layout/point.js").default, uiEvent: import("../utils/interactionEvent.js").InteractionUiEvent): Interaction;
    /**
     * Dispatches mouseleave transitions when the pointer leaves the canvas.
     *
     * @param {import("../utils/interactionEvent.js").InteractionUiEvent} uiEvent
     */
    handlePointerLeave(uiEvent: import("../utils/interactionEvent.js").InteractionUiEvent): void;
    getCurrentTarget(): import("../view/view.js").default<import("../spec/view.js").ViewSpec>;
    #private;
}
import Interaction from "../utils/interaction.js";
//# sourceMappingURL=interactionDispatcher.d.ts.map