/**
 * Copyright (c) 2020-2025 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author David Sehnal <david.sehnal@gmail.com>
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 *
 * Adapted from three.js, The MIT License, Copyright © 2010-2020 three.js authors
 */
import { Ray3D } from '../../mol-math/geometry/primitives/ray3d.js';
import { Mat4 } from '../../mol-math/linear-algebra.js';
import { ParamDefinition as PD } from '../../mol-util/param-definition.js';
import { Camera, ICamera } from '../camera.js';
import { Viewport } from './util.js';
export declare const StereoCameraParams: {
    eyeSeparation: PD.Numeric;
    focus: PD.Numeric;
};
export declare const DefaultStereoCameraProps: PD.Values<{
    eyeSeparation: PD.Numeric;
    focus: PD.Numeric;
}>;
export type StereoCameraProps = PD.Values<typeof StereoCameraParams>;
export { StereoCamera };
declare class StereoCamera {
    private parent;
    readonly left: EyeCamera;
    readonly right: EyeCamera;
    get viewport(): Viewport;
    get viewOffset(): Camera.ViewOffset;
    private props;
    constructor(parent: Camera, props?: Partial<StereoCameraProps>);
    setProps(props: Partial<StereoCameraProps>): void;
    update(xr?: {
        pose: XRViewerPose;
        layer: XRWebGLLayer;
    }): void;
}
declare namespace StereoCamera {
    function is(camera: Camera | StereoCamera): camera is StereoCamera;
}
declare class EyeCamera implements ICamera {
    viewport: Viewport;
    view: Mat4;
    projection: Mat4;
    projectionView: Mat4;
    inverseProjectionView: Mat4;
    headRotation: Mat4;
    viewEye: Mat4;
    isAsymmetricProjection: boolean;
    state: Readonly<Camera.Snapshot>;
    viewOffset: Readonly<Camera.ViewOffset>;
    far: number;
    near: number;
    fogFar: number;
    fogNear: number;
    forceFull: boolean;
    scale: number;
    minTargetDistance: number;
    disabled: boolean;
    getRay(out: Ray3D, x: number, y: number): Ray3D;
}
