import type { Vec3 } from '../math'; import { type CameraProjection } from '../settings'; import { type Camera, type Scene, type Vector3 } from 'three/webgpu'; import type { GizmoOptions } from './gizmo'; export declare const page_visibility: { visible: boolean; }; export declare const HOVER_THROTTLE_MS = 16; export type ThreltePointerEvent = { point: Vector3; nativeEvent: PointerEvent; stopPropagation: () => void; }; export type SceneControlProps = { camera_projection?: CameraProjection; rotation_damping?: number; max_zoom?: number; min_zoom?: number; rotate_speed?: number; zoom_speed?: number; pan_speed?: number; zoom_to_cursor?: boolean; fov?: number; initial_zoom?: number; ambient_light?: number; directional_light?: number; gizmo?: boolean | GizmoOptions; auto_rotate?: number; scene?: Scene; camera?: Camera; }; export type SceneControls = Required> & Pick; export declare const SCENE_CONTROL_DEFAULTS: SceneControls; export declare const resolve_scene_controls: (props: SceneControlProps) => SceneControls; export declare const get_orthographic_zoom_bounds: (fit_zoom: number, min_zoom?: number, max_zoom?: number) => { min_zoom: number; max_zoom: number; }; export declare const resize_orthographic_zoom: (current_zoom: number | undefined, previous_fit_zoom: number, next_fit_zoom: number, min_zoom?: number, max_zoom?: number) => number; export declare function create_orthographic_zoom(opts: { fit_zoom: () => number; min_zoom: () => number | undefined; max_zoom: () => number | undefined; measured: () => boolean; camera: () => Camera | undefined; }): { readonly zoom: number; readonly min_zoom: number; readonly max_zoom: number; reset_to_fit(): void; orbit_zoom_props: () => { min_zoom: number; max_zoom: number; on_end_extra: () => void; }; }; export declare function build_orbit_props(opts: { camera_projection: CameraProjection; target: Vec3; rotate_speed: number; zoom_speed: number; zoom_to_cursor: boolean; pan_speed: number; max_zoom: number | undefined; min_zoom: number | undefined; auto_rotate: number; rotation_damping: number; set_camera_is_moving?: (moving: boolean) => void; on_start_extra?: () => void; on_end_extra?: () => void; }): { target: Vec3; enableRotate: boolean; rotateSpeed: number; enableZoom: boolean; zoomSpeed: number; zoomToCursor: boolean; enablePan: boolean; panSpeed: number; maxZoom: number | undefined; minZoom: number | undefined; autoRotate: boolean; autoRotateSpeed: number; enableDamping: boolean; dampingFactor: number; onstart: () => void; onend: () => void; }; export declare function create_scene_camera(opts: { controls: () => Pick & { camera_projection: CameraProjection; }; target: () => Vec3; fit_zoom: () => number; measured: () => boolean; camera: () => Camera | undefined; set_camera_is_moving?: (moving: boolean) => void; on_start_extra?: () => void; }): { readonly zoom: number; readonly orbit_props: { target: Vec3; enableRotate: boolean; rotateSpeed: number; enableZoom: boolean; zoomSpeed: number; zoomToCursor: boolean; enablePan: boolean; panSpeed: number; maxZoom: number | undefined; minZoom: number | undefined; autoRotate: boolean; autoRotateSpeed: number; enableDamping: boolean; dampingFactor: number; onstart: () => void; onend: () => void; }; reset_to_fit: () => void; }; export declare function mirror_scene_props(model: object, incoming: object): void;