import '../../../assert/js/assert.js';
import '../../../globals.js';
/**
 * Used for identifying when any ancestor transform of a node in a trail causes that node's global transform to change.
 * It also provides fast computation of that global matrix, NOT recomputing every matrix, even on most transform
 * changes.
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 * @author Jesse Greenberg
 */
import Matrix3 from '../../../dot/js/Matrix3.js';
import { Trail } from '../imports.js';
type SelfOptions = {
    isStatic?: boolean;
};
export type TransformTrackerOptions = SelfOptions;
declare class TransformTracker {
    private readonly trail;
    private _matrices;
    private _dirtyIndex;
    private _listeners;
    private readonly _nodeTransformListeners;
    private readonly _isStatic;
    /**
     * Creates a transform-tracking object, where it can send out updates on transform changes, and also efficiently
     * compute the transform.
     */
    constructor(trail: Trail, providedOptions?: TransformTrackerOptions);
    /**
     * Gets rid of all external references and listeners. This object is inoperable afterwards.
     */
    dispose(): void;
    /**
     * Adds a listener function that will be synchronously called whenever the transform for this Trail changes.
     */
    addListener(listener: () => void): void;
    /**
     * Removes a listener that was previously added with addListener().
     */
    removeListener(listener: () => void): void;
    /**
     * Notifies listeners of a transform change.
     */
    private notifyListeners;
    /**
     * Called when one of the nodes' transforms is changed.
     *
     * @param matrixIndex - The index into our matrices array, e.g. this._matrices[ matrixIndex ].
     */
    private onTransformChange;
    /**
     * Returns the local-to-global transformation matrix for the Trail, which transforms its leaf node's local
     * coordinate frame into the global coordinate frame.
     *
     * NOTE: The matrix returned should not be mutated. Please make a copy if needed.
     */
    getMatrix(): Matrix3;
    get matrix(): Matrix3;
}
export default TransformTracker;
//# sourceMappingURL=TransformTracker.d.ts.map