import '../../chipper/js/browser/initialize-globals.js';
import '../../assert/js/assert.js';
import '../../globals.js';
/**
 * Registry for all objects with a tandem/descriptionTandem set, for use by the description system.
 *
 * NOTE: Experimental currently, see https://github.com/phetsims/joist/issues/941
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import TinyEmitter from '../../axon/js/TinyEmitter.js';
import IntentionalAny from '../../phet-core/js/types/IntentionalAny.js';
import type PhetioObject from './PhetioObject.js';
import type Tandem from './Tandem.js';
type DescriptionEntry = {
    [K: string]: DescriptionEntry | PhetioObject | null;
};
type Settable = IntentionalAny;
type TandemID = string;
export default class DescriptionRegistry {
    static readonly ENABLED: boolean;
    static readonly root: DescriptionEntry;
    static readonly map: Map<TandemID, Settable>;
    static readonly addedEmitter: TinyEmitter<[string, PhetioObject]>;
    static readonly removedEmitter: TinyEmitter<[string, PhetioObject]>;
    /**
     * Called when a PhetioObject is created with a tandem, or when a tandem is set on a PhetioObject.
     * Can also be called with a custom tandem that is not part of the PhET-iO API.
     */
    static add(tandem: Tandem, settable: Settable): void;
    /**
     * Called when a PhetioObject is disposed, or when you want to remove a custom tandem that is not part of the PhET-iO API.
     */
    static remove(settable: Settable): void;
}
export {};
//# sourceMappingURL=DescriptionRegistry.d.ts.map