/**
 * @module viw-webgl-react
 */
import * as THREE from 'three';
import { SectionBoxRef } from './sectionBoxState';
import { ActionRef, AsyncFuncRef, StateRef } from '../helpers/reactUtils';
import { ISignal } from 'ste-signals';
export interface CameraRef {
    autoCamera: StateRef<boolean>;
    reset: ActionRef;
    frameSelection: AsyncFuncRef<void>;
    frameScene: AsyncFuncRef<void>;
    getSelectionBox: AsyncFuncRef<THREE.Box3 | undefined>;
    getSceneBox: AsyncFuncRef<THREE.Box3 | undefined>;
}
interface ICameraAdapter {
    onSelectionChanged: ISignal;
    frameCamera: (box: THREE.Box3, duration: number) => void;
    resetCamera: (duration: number) => void;
    getSelectionBox: () => Promise<THREE.Box3 | undefined>;
    getSceneBox: () => Promise<THREE.Box3 | undefined>;
}
export declare function useCamera(adapter: ICameraAdapter, section: SectionBoxRef): CameraRef;
export {};
