import '../../tandem/js/PhetioIDUtils.js';
import '../../globals.js';
import Bounds2 from '../../dot/js/Bounds2.js';
import Matrix3 from '../../dot/js/Matrix3.js';
import { Node, NodeOptions, Rectangle } from '../../scenery/js/imports.js';
import ThreeStage, { ThreeStageOptions } from './ThreeStage.js';
import TReadOnlyProperty from '../../axon/js/TReadOnlyProperty.js';
import Vector2 from '../../dot/js/Vector2.js';
import Vector3 from '../../dot/js/Vector3.js';
import Ray3 from '../../dot/js/Ray3.js';
import PhetioObject from '../../tandem/js/PhetioObject.js';
type MouseHitListener = (point: Vector2) => PhetioObject | null | 'phetioNotSelectable';
type SelfOptions = {
    parentMatrixProperty?: TReadOnlyProperty<Matrix3>;
    fov?: number;
    getPhetioMouseHit?: MouseHitListener | null;
    viewOffset?: Vector2;
};
export type ThreeIsometricNodeOptions = SelfOptions & ThreeStageOptions & NodeOptions;
export default class ThreeIsometricNode extends Node {
    private layoutBounds;
    private _getPhetioMouseHit;
    readonly stage: ThreeStage;
    private parentMatrixProperty;
    readonly backgroundEventTarget: Rectangle;
    private domNode;
    private viewOffsetListener;
    constructor(layoutBounds: Bounds2, providedOptions?: ThreeIsometricNodeOptions);
    getPhetioMouseHit(point: Vector2): PhetioObject | null | 'phetioNotSelectable';
    /**
     * Projects a 3d point in the global coordinate frame to one within the 2d global coordinate frame.
     */
    projectPoint(point: Vector3): Vector2;
    /**
     * Project a 2d global screen coordinate into 3d global coordinate frame. Defaults to a target model z of 0 (in
     * model coords)
     */
    unprojectPoint(point: Vector2, modelZ?: number): Vector3;
    /**
     * Given a screen point, returns a 3D ray representing the camera's position and direction that point would be in the
     * 3D scene.
     */
    getRayFromScreenPoint(globalScreenPoint: Vector2): Ray3;
    layout(width: number, height: number): void;
    /**
     * Renders the simulation to a specific rendering target
     *
     * @param target - undefined for the default target
     */
    render(target: THREE.WebGLRenderTarget | undefined): void;
    /**
     * Releases references.
     */
    dispose(): void;
}
export {};
//# sourceMappingURL=ThreeIsometricNode.d.ts.map