import { Transform } from '../base/Transform';
import { Matrix3D } from '../geom/Matrix3D';
import { Vector3D } from '../geom/Vector3D';
import { EventDispatcher } from '../events/EventDispatcher';
import { CoordinateSystem } from './CoordinateSystem';
import { Rectangle } from '../geom/Rectangle';
import { Plane3D } from '../geom/Plane3D';
export declare class ProjectionBase extends EventDispatcher {
    protected _viewMatrix3D: Matrix3D;
    protected _inverseViewMatrix3D: Matrix3D;
    protected _frustumMatrix3D: Matrix3D;
    protected _near: number;
    protected _far: number;
    protected _scale: number;
    protected _ratio: number;
    protected _transform: Transform;
    protected _coordinateSystem: CoordinateSystem;
    protected _originX: number;
    protected _originY: number;
    protected _frustumRect: Rectangle;
    private _viewFrustumCorners;
    private _viewFrustumPlanes;
    private _propertiesDirty;
    private _viewMatrix3DDirty;
    private _inverseViewMatrix3DDirty;
    protected _frustumMatrix3DDirty: boolean;
    private _viewFrustumCornersDirty;
    private _viewFrustumPlanesDirty;
    private _onInvalidateConcatenatedMatrix3DDelegate;
    constructor(coordinateSystem?: CoordinateSystem);
    get transform(): Transform;
    set transform(value: Transform);
    /**
     * The handedness of the coordinate system projection. The default is LEFT_HANDED.
     */
    get coordinateSystem(): CoordinateSystem;
    set coordinateSystem(value: CoordinateSystem);
    /**
     *
     */
    get scale(): number;
    set scale(value: number);
    /**
     *
     */
    get ratio(): number;
    set ratio(value: number);
    /**
     *
     * @returns {Matrix3D}
     */
    get frustumMatrix3D(): Matrix3D;
    set frustumMatrix3D(value: Matrix3D);
    /**
     *
     * @returns {number[]}
     */
    get viewFrustumCorners(): number[];
    /**
     *
     */
    get viewFrustumPlanes(): Array<Plane3D>;
    /**
     *
     * @returns {number}
     */
    get near(): number;
    set near(value: number);
    /**
     *
     * @returns {number}
     */
    get originX(): number;
    set originX(value: number);
    /**
     *
     * @returns {number}
     */
    get originY(): number;
    set originY(value: number);
    /**
     *
     * @returns {number}
     */
    get far(): number;
    set far(value: number);
    get frustumRect(): Rectangle;
    /**
     *
     * @param position
     * @param target
     */
    project(position: Vector3D, target?: Vector3D): Vector3D;
    /**
     *
     * @param nX
     * @param nY
     * @param sZ
     * @param target
     */
    unproject(nX: number, nY: number, sZ: number, target?: Vector3D): Vector3D;
    get viewMatrix3D(): Matrix3D;
    get inverseViewMatrix3D(): Matrix3D;
    clone(): ProjectionBase;
    private _invalidateProperties;
    private _invalidateViewMatrix3D;
    protected _invalidateFrustumMatrix3D(): void;
    protected _updateFrustumMatrix3D(): void;
    protected _updateProperties(): void;
    private _onInvalidateConcatenatedMatrix3D;
}
//# sourceMappingURL=ProjectionBase.d.ts.map