/*!
 * Jodit Editor (https://xdsoft.net/jodit/)
 * Released under MIT see LICENSE.txt in the project root for license information.
 * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
 */
/**
 * @module dom
 */
import type { IAsync, IDestructible } from "../../types/index";
import { Eventify } from "../event-emitter/eventify";
/**
 * Walks the DOM tree in small chunks between browser tasks so that even huge
 * documents do not block the main thread.
 *
 * Events:
 * - `visit` - is called for every node; return `true` to mark the pass as
 *   "had effect" (it will be passed into the `end` event)
 * - `break` - the pass was interrupted via [[LazyWalker.break]]
 * - `end` - the pass is finished, receives `true` if some `visit` handler returned `true`
 */
export declare class LazyWalker extends Eventify<{
    visit: (node: Node) => boolean;
    break: (reason?: string) => void;
    end: (affect: boolean) => void;
}> implements IDestructible {
    private readonly async;
    private readonly options;
    private workNodes;
    /**
     * Starts a new pass over the `root` tree.
     * If a previous pass is still running it will be stopped first.
     */
    setWork(root: Node): this;
    private hadAffect;
    private isWorked;
    private isFinished;
    constructor(async: IAsync, options?: {
        /** Visit only nodes with this `nodeType` (e.g. `Node.ELEMENT_NODE`) */
        readonly whatToShow?: number;
        /** Walk the tree from the last node to the first */
        readonly reverse?: boolean;
        /** How many nodes are processed per one chunk. Default: 50 */
        readonly timeoutChunkSize?: number;
        /** Delay between chunks in ms */
        readonly timeout?: number;
    });
    private __schedulerController;
    private _requestStarting;
    break(reason?: string): void;
    end(): void;
    private stop;
    destruct(): void;
    private __workPerform;
    private visitNode;
}
