import { Group, Camera } from 'three'; export interface CaptureSnapshotOptions { /** Height resolution in pixels (width is computed from camera aspect ratio) */ height?: number; /** Whether to download the image automatically */ download?: boolean; /** Filename for download (without extension) */ filename?: string; } /** * Hook to capture high-resolution snapshots from virtual cameras. * * This hook provides two methods for capturing snapshots: * 1. captureByKey - Capture from a registered virtual camera by its key * 2. captureCamera - Capture directly from any Camera object * * Both methods use temporary SparkViewpoint for rendering, which supports * 3DGS (Gaussian Splatting) content. For fisheye cameras, a special * cubemap-based rendering pipeline is used. * * @example * const { captureByKey, captureCamera } = useCameraSnapshot(); * * // Capture from registered camera * const blob = await captureByKey('cam1', groupRef, { height: 1080, download: true }); * * // Capture from any camera object * const blob = await captureCamera(myCamera, { height: 2160 }); */ export declare function useCameraSnapshot(): { captureByKey: (cameraKey: string, groupRef: React.RefObject, options?: CaptureSnapshotOptions) => Promise; captureCamera: (camera: Camera, options?: CaptureSnapshotOptions & { aspect?: number; }) => Promise; };