import { Behaviour } from "../Component.js";
/**
 * This component can be used to automatically fit a certain box area into the camera view - no matter your screen size or aspect ratio.
 * This is useful for example to frame a character or object in the center of the screen and ensure it is always fully visible. You can also animate or scale the viewbox to create zoom or framing effects.
 *
 * - [Example on needle.run](https://viewbox-demo-z23hmxbz2gkayo-z1nyzm6.needle.run/)
 * - [Scrollytelling Demo using animated Viewbox](https://scrollytelling-bike-z23hmxb2gnu5a.needle.run/)
 * - [Example on Stackblitz](https://stackblitz.com/edit/needle-engine-view-box-example)
 *
 * @example Add a Viewbox component to an object in your scene
 * ```ts
  const viewBox = new Object3D();
  viewBox.scale.set(0, 0, 0);
  viewBox.addComponent(ViewBox, { debug: true });
  scene.add(viewBox);
 * ```
  
 * @category Camera
 * @group Components
 * @component
 */
export declare class ViewBox extends Behaviour {
    static readonly instances: ViewBox[];
    /**
     * The reference field of view is used to calculate the box size. This should usually be the same as your camera's fov.
     * @default -1 (meaning it will use the camera fov on the first frame)
     */
    referenceFieldOfView: number;
    /**
     * Enable debug logs and rendering for this component instance
     */
    debug: boolean;
    onEnable(): void;
    onDisable(): void;
    private removeUpdateCallback;
    private static readonly _tempProjectionMatrix;
    private static readonly _tempProjectionMatrixInverse;
    private internalUpdate;
    /**
     * Cover fit
     */
    private fit;
    private projectBoxIntoCamera;
    private _projectedBoxElement;
}
