import '../../../../assert/js/assert.js';
import '../../../../globals.js';
/**
 * A trait for Node that mixes functionality to support visual highlights that appear on hover with a pointer.
 *
 * @author Jesse Greenberg (PhET Interactive Simulations)
 */
import TEmitter from '../../../../axon/js/TEmitter.js';
import TReadOnlyProperty from '../../../../axon/js/TReadOnlyProperty.js';
import Constructor from '../../../../phet-core/js/types/Constructor.js';
import IntentionalAny from '../../../../phet-core/js/types/IntentionalAny.js';
import { Display, Instance, Node, Trail } from '../../imports.js';
import { Highlight } from '../../overlays/HighlightOverlay.js';
type SelfOptions = {
    interactiveHighlight?: Highlight;
    interactiveHighlightLayerable?: boolean;
    interactiveHighlightEnabled?: boolean;
};
export type InteractiveHighlightingOptions = SelfOptions;
export interface TInteractiveHighlighting<SuperType extends Node = Node> {
    displays: Record<string, Display>;
    interactiveHighlightChangedEmitter: TEmitter;
    readonly isInteractiveHighlightActiveProperty: TReadOnlyProperty<boolean>;
    readonly _isInteractiveHighlighting: true;
    setInteractiveHighlight(interactiveHighlight: Highlight): void;
    interactiveHighlight: Highlight;
    getInteractiveHighlight(): Highlight;
    setInteractiveHighlightLayerable(interactiveHighlightLayerable: boolean): void;
    interactiveHighlightLayerable: boolean;
    getInteractiveHighlightLayerable(): boolean;
    setInteractiveHighlightEnabled(enabled: boolean): void;
    getInteractiveHighlightEnabled(): boolean;
    interactiveHighlightEnabled: boolean;
    handleHighlightActiveChange(): void;
    onChangedInstance(instance: Instance, added: boolean): void;
    getDescendantsUseHighlighting(trail: Trail): boolean;
    mutate(options?: SelfOptions & Parameters<SuperType['mutate']>[0]): this;
}
declare const InteractiveHighlighting: <SuperType extends Constructor<Node>>(k: SuperType) => SuperType & Constructor<TInteractiveHighlighting<InstanceType<SuperType>>>;
export type InteractiveHighlightingNodeType = Node & TInteractiveHighlighting;
export declare function isInteractiveHighlighting(something: IntentionalAny): something is InteractiveHighlightingNodeType;
export default InteractiveHighlighting;
//# sourceMappingURL=InteractiveHighlighting.d.ts.map