import { PluginFlag } from '../typings';
export declare const setAttributesAndData: (element: HTMLElement, attributes: Record<string, string | number | boolean>, dataAttributes: Record<string, string | number>, child?: string | Node) => void;
export declare const findParent: (element: HTMLElement, _conditions: ((element: HTMLElement) => boolean) | Array<(element: HTMLElement) => boolean>) => (HTMLElement | null)[];
export declare const findClosestPara: (startElm: HTMLElement) => HTMLElement | null;
export declare const findAllParaInRange: (startP: HTMLElement, endP: HTMLElement) => HTMLElement[];
export declare const getOverlay: (type: PluginFlag) => HTMLDivElement;
export declare const spellingTextNode: (node: Node, spellingText?: string, firstJudge?: boolean) => void;
/**
 * 获取两个随机字符串中的最长**连续**子序列
 * 借助变量正序DP，一维数组（空间复杂度O(m)）
 * @param {String} text1 随机字符串
 * @param {String} text2 随机字符串
 * @return string
 *
 * 时间复杂度：O(mn) - DP循环次数
 * 空间复杂度：O(n) - text2字符串长度
 */
export declare const longestConsecutiveSubsequence: (text1: string, text2: string) => string;
/**
 * 判断光标是否在 <p> 段落的末尾
 *
 * 使用场景：
 *  - 监听 Backspace/Delete 时，避免浏览器默认合并段落的行为
 *  - 用于富文本编辑器中，检测用户是否在段落结尾输入
 *
 * 实现思路：
 *  1. 获取当前 selection 对象（window.getSelection）
 *  2. 如果没有光标或当前是选区（Range），直接返回 false
 *  3. 找到光标所在的最近 <p> 段落
 *  4. 克隆一个 range，从光标位置扩展到段落结尾
 *  5. 如果扩展后的 range 没有内容，说明光标就在段落末尾
 *
 * @returns {boolean} true 表示光标在当前 <p> 段落的末尾
 */
export declare const isCursorAtParagraphEnd: () => boolean;
export declare const ensureCaretInParagraph: (editor: HTMLElement) => void;
export declare const clearParagraphKeep: (pElm: HTMLElement, selection: Selection) => void;
/**
 * 将弹窗元素定位到目标元素下方（relative to parentEl）
 * @param {DOMRect} parentDOMRect - 父元素DOMRect
 * @param {DOMRect} targetDOMRect - 目标元素DOMRect
 * @param {number} offset - 距离 span 底部的间距，默认 6px
 */
export declare const positionPopupUnderSpan: (parentDomRect?: DOMRect, spanDomRect?: DOMRect, offset?: number) => {
    top: number;
    left: number;
    width: number;
    height: number;
};
