import '../../../assert/js/assert.js';
import '../../../globals.js';
/**
 * A Property that will contain a list of Trails where the root of the trail is a root Node of a Display, and the leaf
 * node is the provided Node.
 *
 * // REVIEW: This is a very complicated component and deserves a bit more doc. Some ideas about what to explain:
 * // REVIEW:   1. That this is synchronously updated and doesn't listen to instances.
 * // REVIEW:   2.
 * // REVIEW:   2.
 * // REVIEW:   2.
 *
 * // REVIEW: can you describe this a bit more. Do you mean any Node in a trail? What about if the provided Node is disposed?
 * NOTE: If a Node is disposed, it will be removed from the trails.
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import TinyProperty from '../../../axon/js/TinyProperty.js';
import { Display, Node, Trail } from '../imports.js';
type DisplayPredicate = Display | ((display: Display) => boolean) | null;
export type DisplayedTrailsPropertyOptions = {
    display?: DisplayPredicate;
    followPDOMOrder?: boolean;
    requireVisible?: boolean;
    requirePDOMVisible?: boolean;
    requireEnabled?: boolean;
    requireInputEnabled?: boolean;
};
export default class DisplayedTrailsProperty extends TinyProperty<Trail[]> {
    readonly node: Node;
    readonly listenedNodeSet: Set<Node>;
    private readonly _trailUpdateListener;
    private readonly display;
    private readonly followPDOMOrder;
    private readonly requireVisible;
    private readonly requirePDOMVisible;
    private readonly requireEnabled;
    private readonly requireInputEnabled;
    /**
     * We will contain Trails whose leaf node (lastNode) is this provided Node.
     */
    constructor(node: Node, providedOptions?: DisplayedTrailsPropertyOptions);
    private update;
    private addNodeListener;
    private removeNodeListener;
    dispose(): void;
}
export {};
//# sourceMappingURL=DisplayedTrailsProperty.d.ts.map