import { Component } from "../../hierarchy_object/Component";
import type { ReadonlyColor } from "../../render/ReadonlyColor";
/**
 * caamera projection type
 */
export declare enum CameraType {
    Perspective = 0,
    Orthographic = 1
}
/**
 * camera component
 *
 * it's a wrapper for `THREE.Camera`
 *
 * At least one camera component must exist in the scene
 */
export declare class Camera extends Component {
    private _camera;
    private _cameraType;
    private _fov;
    private _viewSize;
    private _zoom;
    private _near;
    private _far;
    private _priority;
    private _backgroundColor;
    private _cameraContainer;
    private readonly onScreenResize;
    awake(): void;
    onEnable(): void;
    onWorldMatrixUpdated(): void;
    private createOrUpdateCamera;
    private createNewPerspectiveCamera;
    private createNewOrthographicCamera;
    onDisable(): void;
    onDestroy(): void;
    /**
     * camera projection type (default: `CameraType.Orthographic`)
     *
     * perspective: Camera will render objects with perspective intact
     *
     * orthographic: Camera will render objects uniformly, with no sense of perspective
     */
    get cameraType(): CameraType;
    /**
     * camera projection type (default: `CameraType.Orthographic`)
     *
     * perspective: Camera will render objects with perspective intact
     *
     * orthographic: Camera will render objects uniformly, with no sense of perspective
     */
    set cameraType(value: CameraType);
    /**
     * field of view (default: 75)
     *
     * only available when cameraType is Perspective
     */
    get fov(): number;
    /**
     * field of view (default: 75)
     *
     * only available when cameraType is Perspective
     */
    set fov(value: number);
    /**
     * view size (default: 5)
     *
     * only available when cameraType is Orthographic
     */
    get viewSize(): number;
    /**
     * view size (default: 5)
     *
     * only available when cameraType is Orthographic
     */
    set viewSize(value: number);
    /**
     * zoom (default: 1)
     */
    get zoom(): number;
    /**
     * zoom (default: 1)
     */
    set zoom(value: number);
    /**
     * near clipping plane (default: 0.1)
     *
     * this property is not available when using CssRenderer because css does not support frustum culling
     */
    get near(): number;
    /**
     * near clipping plane (default: 0.1)
     *
     * this property is not available when using CssRenderer because css does not support frustum culling
     */
    set near(value: number);
    /**
     * far clipping plane (default: 1000)
     *
     * this property is not available when using CssRenderer because css does not support frustum culling
     */
    get far(): number;
    /**
     * far clipping plane (default: 1000)
     *
     * this property is not available when using CssRenderer because css does not support frustum culling
     */
    set far(value: number);
    /**
     * priority of the camera (default: 0)
     *
     * If there are multiple cameras in the scene, higher priority cameras will be rendered
     */
    get priority(): number;
    /**
     * priority of the camera (default: 0)
     *
     * If there are multiple cameras in the scene, higher priority cameras will be rendered
     */
    set priority(value: number);
    /**
     * background color of the camera (default: null)
     *
     * This color will fill the empty space of the scene
     *
     * When used with WebGLRenderer, you can specify a texture background. And in the case of color, the alpha channel is ignored
     */
    get backgroundColor(): null | ReadonlyColor | THREE.Texture;
    /**
     * background color of the camera (default: null)
     *
     * This color will fill the empty space of the scene
     *
     * When used with WebGLRenderer, you can specify a texture background. And in the case of color, the alpha channel is ignored
     */
    set backgroundColor(value: null | ReadonlyColor | THREE.Texture);
}
