/**
 * A laser pointer, with optional on/off button (toggle or momentary).
 * Default orientation is pointing to the right. Origin is at right center (the edge of the output nozzle).
 *
 * @author Chris Malley (PixelZoom, Inc.)
 */
import '../../globals.js';
import '../../chipper/js/browser/initialize-globals.js';
import TProperty from '../../axon/js/TProperty.js';
import Dimension2 from '../../dot/js/Dimension2.js';
import Vector2 from '../../dot/js/Vector2.js';
import { OptionizeDefaults } from '../../phet-core/js/optionize.js';
import PickOptional from '../../phet-core/js/types/PickOptional.js';
import { TrimParallelDOMOptions } from '../../scenery/js/accessibility/pdom/ParallelDOM.js';
import Node, { NodeOptions } from '../../scenery/js/nodes/Node.js';
import TColor from '../../scenery/js/util/TColor.js';
import { RoundButtonOptions } from '../../sun/js/buttons/RoundButton.js';
import { ShadedSphereNodeOptions } from './ShadedSphereNode.js';
type ButtonType = 'toggle' | 'momentary';
type ButtonOptions = PickOptional<RoundButtonOptions, 'baseColor' | 'radius' | 'xMargin' | 'yMargin' | 'touchAreaDilation' | 'mouseAreaDilation' | 'rotation'>;
type SelfOptions = {
    bodySize?: Dimension2;
    nozzleSize?: Dimension2;
    topColor?: TColor;
    bottomColor?: TColor;
    highlightColor?: TColor;
    highlightColorStop?: number;
    stroke?: TColor;
    lineWidth?: number;
    cornerRadius?: number;
    hasButton?: boolean;
    buttonType?: ButtonType;
    buttonOptions?: ButtonOptions;
    getButtonLocation?: (bodyNode: Node) => Vector2;
    hasGlass?: boolean;
    glassOptions?: {
        heightProportion?: number;
        proportionStickingOut?: number;
    } & ShadedSphereNodeOptions;
};
export type LaserPointerNodeOptions = SelfOptions & TrimParallelDOMOptions<NodeOptions>;
export default class LaserPointerNode extends Node {
    private readonly disposeLaserPointerNode;
    readonly onOffButton: Node | null;
    static readonly DEFAULT_LASER_NODE_OPTIONS: OptionizeDefaults<SelfOptions, NodeOptions>;
    /**
     * @param onProperty - is the laser on?
     * @param providedOptions
     */
    constructor(onProperty: TProperty<boolean>, providedOptions?: LaserPointerNodeOptions);
    get enabled(): boolean;
    set enabled(value: boolean);
    dispose(): void;
}
export {};
