type NodeObservationConfig = {
    element: HTMLElement;
    onFirstVisible: () => void;
};
export type NodeVisibilityManager = {
    /**
     * Kills the IntersectionObserver and all callbacks
     * @returns
     */
    disconnect: () => void;
    /**
     * Establishes IntersectionObserver for the editor to monitor all node viewport visibility
     * @param editorDivElement
     * @returns
     */
    initialiseNodeObserver: () => void;
    /**
     * observes specific node element with callbacks for triggering when the node is visible or hidden
     */
    observe: (observeConfig: NodeObservationConfig) => () => void;
};
type NodeVisibilityManagerFn = (editorElement: HTMLElement) => NodeVisibilityManager;
/**
 * Creates a node visibility manager
 * @param editorElement
 * @returns
 */
export declare const nodeVisibilityManager: NodeVisibilityManagerFn;
export {};
