/**
 * @typedef {{
 *   owner: object,
 *   raw: unknown,
 *   evaluate: () => string | undefined,
 *   watch: (registerDisposer: (dispose: () => void) => void, listener: () => void) => void,
 * }} CursorSource
 */
/**
 * @param {CursorView | undefined} target
 * @param {{ mark?: CursorOwner } | undefined} hover
 * @returns {CursorSource | undefined}
 */
export function resolveCursorSource(target: CursorView | undefined, hover: {
    mark?: CursorOwner;
} | undefined): CursorSource | undefined;
/**
 * Resolves and applies the active canvas cursor based on the current mark hover
 * and interaction target path.
 */
/**
 * @typedef {{
 *   getCursorSpec?: () => unknown,
 *   getCursor: () => string | undefined,
 *   watchCursor?: (listener: () => void, registerDisposer: (dispose: () => void) => void) => void,
 * }} CursorOwner
 */
/**
 * @typedef {CursorOwner & {
 *   getLayoutAncestors: () => CursorView[],
 * }} CursorView
 */
export default class CursorManager {
    /**
     * @param {object} options
     * @param {HTMLCanvasElement} options.canvas
     */
    constructor({ canvas }: {
        canvas: HTMLCanvasElement;
    });
    /**
     * @param {object} options
     * @param {CursorView | undefined} options.target
     * @param {{ mark?: CursorOwner } | undefined} options.hover
     */
    update({ target, hover }: {
        target: CursorView | undefined;
        hover: {
            mark?: CursorOwner;
        } | undefined;
    }): void;
    clear(): void;
    #private;
}
export type CursorSource = {
    owner: object;
    raw: unknown;
    evaluate: () => string | undefined;
    watch: (registerDisposer: (dispose: () => void) => void, listener: () => void) => void;
};
export type CursorOwner = {
    getCursorSpec?: () => unknown;
    getCursor: () => string | undefined;
    watchCursor?: (listener: () => void, registerDisposer: (dispose: () => void) => void) => void;
};
export type CursorView = CursorOwner & {
    getLayoutAncestors: () => CursorView[];
};
//# sourceMappingURL=cursorManager.d.ts.map