import { CombinedAllNodeVisitor } from '../../../combined/visitors/CombinedAllNodeVisitor';
import { IReferenceNode } from '../../../core/models/IReferenceNode';
import { Node } from '../../../core/models/Node';
/**
 * Collect all nodes representing reference objects. Those nodes
 * MUST implement {@link IReferenceNode} and {@link INamed}.
 * <p>
 * Warning: The nodes are not cloned, so modifying them would modify the original model.
 * You MUST clone them yourself before changing their state.
 * <p>
 * Do not reuse visitor instances for multiple traversals.
 *
 * @author Jakub Senko <jsenko@redhat.com>
 * @class
 * @extends CombinedAllNodeVisitor
 */
export declare class ReferenceCollectionVisitor extends CombinedAllNodeVisitor {
    fullNodes: Array<IReferenceNode>;
    referencedNodes: Array<IReferenceNode>;
    /**
     * Visit a node.  This is a common method called for every node type.
     *
     * @param {Node} node
     */
    visitNode(node: Node): void;
    /**
     * @return {*[]} An map of collected nodes that CONTAIN an actual reference string.
     */
    getReferencedNodes(): Array<IReferenceNode>;
    /**
     * @return {*[]} An map of collected nodes that DO NOT CONTAIN an actual reference string,
     * i.e. full nodes.
     */
    getFullNodes(): Array<IReferenceNode>;
    constructor();
}
