/**
 * Remove all nodes that have no text content recursively, including the given node.
 *
 * @param {import('domhandler').Node} node Node to remove empty nodes from (including self).
 * @private
 */
export function domRemoveEmpty(node: import('domhandler').Node): void;
/**
 * Find the correct node for a text offset from an existing node.
 * Will explore sibling leaf nodes up the tree as far as the given root.
 *
 * @param {import('domhandler').Node} node Node to start exploring from.
 * @param {number} offset Text offset to find node for.
 * @param {import('domhandler').Node} root Node to consider the root of the tree.
 * @param {boolean} [nextOnExact=false] Move to the next node if the offset is exactly the length of the current node.
 * @returns {{node: import('domhandler').Node, offset: number}} The node the remaining offset is within.
 * @private
 */
export function domOffsetNode(node: import('domhandler').Node, offset: number, root: import('domhandler').Node, nextOnExact?: boolean): {
    node: import('domhandler').Node;
    offset: number;
};
/**
 * Split a node at a given offset up to a given root.
 *
 * @param {import('domhandler').Node} root Node to consider the root of the tree.
 * @param {import('domhandler').Node} node Node to split.
 * @param {?number} [offset=null] Optional offset to split at.
 * @param {boolean} [nodeInRight=true] If the node to split on should be in the right tree of the split.
 * @returns {{left: import('domhandler').Node[], right: import('domhandler').Node[]}}
 * @private
 */
export function domSplit(root: import('domhandler').Node, node: import('domhandler').Node, offset?: number | null, nodeInRight?: boolean): {
    left: import('domhandler').Node[];
    right: import('domhandler').Node[];
};
/**
 * Find a common ancestor of two nodes.
 *
 * @param {import('domhandler').Node} node1 First node to consider.
 * @param {import('domhandler').Node} node2 Second node to consider.
 * @returns {?import('domhandler').Node}
 * @private
 */
export function domCommonAncestor(node1: import('domhandler').Node, node2: import('domhandler').Node): import('domhandler').Node | null;
/**
 * Check if all direct next siblings of a node have no text content.
 *
 * @param {import('domhandler').Node} node Node to consider.
 * @returns {boolean}
 * @private
 */
export function domNextSiblingsEmpty(node: import('domhandler').Node): boolean;
/**
 * Check if all direct previous siblings of a node have no text content.
 *
 * @param {import('domhandler').Node} node Node to consider.
 * @returns {boolean}
 * @private
 */
export function domPreviousSiblingsEmpty(node: import('domhandler').Node): boolean;
