/// <reference types="./types" />
export declare class Search {
    isSearching: boolean;
    searchText: string;
    private searchResults;
    private pos;
    private ignoreCase;
    private matchWholeWord;
    constructor();
    /**
     * 开启搜索
     * @param searchText
     * @param vditor
     */
    run(vditor: IVditor, searchText: string, focus?: boolean): void;
    /**
     * 关闭搜索, 清除搜索结果的高亮
     * @param vditor
     */
    close(vditor: IVditor): void;
    /**
     * 清空搜索结果及其高亮
     */
    private clearResults;
    /**
     * 跳转到下一个匹配searchText的节点, 同时进行高亮
     * 如果没有匹配的节点，则不进行任何操作
     * @param vditor
     */
    next(vditor: IVditor): void;
    /**
     * 跳转到上一个匹配searchText的节点, 同时进行高亮
     * 如果没有匹配的节点，则不进行任何操作
     * @param vditor
    */
    prev(vditor: IVditor): void;
    /**
     * 设置是否忽略大小写
     * @param ignoreCase    值为true表示忽略大小写
     */
    setIgnoreCase(ignoreCase: boolean): void;
    /**
     *
     * 设置是否全词匹配
     * @param matchWholeWord    值为true表示全词匹配
     */
    setMatchWholeWord(matchWholeWord: boolean): void;
    /**
     * 替换pos所指向的node的内容
     * @param vditor
     * @param replaceText   替换后的内容
     * @param focus         是否跳转到下一个可以被替换的node
     * @param saveCursor    是否在替换之前保存光标位置(替换后恢复)
     */
    replace(vditor: IVditor, replaceText: string, focus?: boolean, saveCursor?: boolean): void;
    /**
     * 全部替换
     * @param vditor
     * @param replaceText   替换后的内容
     */
    replaceAll(vditor: IVditor, replaceText: string): void;
    /**
     * 获取当前搜索结果的总数和当前搜索结果的位置
     * @returns ISearchCounter对象
     */
    getSearchCounter(): ISearchCounter;
    /**
     * 找到所有匹配searchText的节点
     * 为匹配的文本添加span标签，用于高亮显示
     * @param vditor
     * @returns 搜索结果对应的节点列表
     */
    private getSearchResult;
    /**
     * 合并相邻的文本节点
     */
    private mergeTextNodes;
    /**
     * 找到光标后第一个匹配searchText的节点，作为第一个跳转的节点
     * @param vditor
     * @returns 第一个跳转节点的位置
     */
    private getStartPos;
    /**
     * 将node滚动到可视区域，并进行特殊的高亮
     * @param node
     * @param vditor
     */
    private focusOnNode;
}
