import { ArcRotateCamera, Camera, Scene } from '../../../../types/src/3d-viewer';

export interface CameraControllerOptions {
    autoRotate?: boolean;
    lowerRadiusLimitMultiplier?: number;
    pinchDeltaPercentage?: number;
    pinchPrecision?: number;
    upperRadiusLimitMultiplier?: number;
    wheelDeltaPercentage?: number;
}
export interface SceneCamera {
    camera: Camera;
    id: string;
    name: string;
}
export declare class CameraController {
    private scene;
    private camera?;
    private sceneCameras;
    private originalCamera?;
    constructor(scene: Scene);
    /**
     * Setup and configure the camera for the scene
     */
    setupCamera(options?: CameraControllerOptions): ArcRotateCamera;
    /**
     * Setup camera behaviors (framing, auto-rotation)
     */
    private setupCameraBehaviors;
    /**
     * Configure camera control sensitivity and limits
     */
    private configureCameraControls;
    /**
     * Update camera sensitivity during render loop
     */
    updateCameraSensitivity(): void;
    /**
     * Get the current camera instance
     */
    getCamera(): ArcRotateCamera | undefined;
    /**
     * Frame the camera to show all visible meshes
     */
    frameScene(): void;
    resetCamera(): void;
    /**
     * Enable or disable auto-rotation
     */
    setAutoRotation(enabled: boolean): void;
    /**
     * Discover scene cameras from the loaded GLB file
     */
    discoverSceneCameras(): SceneCamera[];
    /**
     * Switch to a scene camera
     */
    switchToSceneCamera(cameraId: string): boolean;
    /**
     * Switch back to the original viewer camera
     */
    switchToViewerCamera(): boolean;
    /**
     * Get all discovered scene cameras
     */
    getSceneCameras(): SceneCamera[];
    /**
     * Get all camera names including viewer camera
     */
    getAllCameraNames(): string[];
    /**
     * Dispose of camera resources
     */
    dispose(): void;
}
