import { INodeVisitorDependencies, NodeVisitor } from "./visitor";
/**
 * Creates a visitor for a node type.
 */
export declare type INodeVisitorCreator = typeof NodeVisitor & {
    new (dependencies: INodeVisitorDependencies): NodeVisitor;
};
/**
 * Lazily creates visitors for node types.
 */
export declare class VisitorsBag {
    /**
     * Created visitor instances.
     */
    private readonly instances;
    /**
     * Dependencies to initialize node visitors.
     */
    private readonly dependencies;
    /**
     * Initializes a new instance of the VisitorsBag class.
     *
     * @param dependencies   Dependencies to initialize node visitors.
     */
    constructor(dependencies: INodeVisitorDependencies);
    /**
     * Creates a visitor using its creator.
     *
     * @param creator   Creates the visitor.
     * @returns A created visitor.
     */
    createVisitor(creator: INodeVisitorCreator): NodeVisitor;
}
