import * as THREE from 'three';
import { ISignal } from 'ste-signals';
import { ArgActionRef, AsyncFuncRef, StateRef } from '../helpers/reactUtils';
export type Offsets = {
    topOffset: string;
    sideOffset: string;
    bottomOffset: string;
};
export type OffsetField = keyof Offsets;
export interface SectionBoxRef {
    enable: StateRef<boolean>;
    visible: StateRef<boolean>;
    auto: StateRef<boolean>;
    sectionSelection: AsyncFuncRef<void>;
    sectionScene: AsyncFuncRef<void>;
    sectionBox: ArgActionRef<THREE.Box3>;
    getBox: () => THREE.Box3;
    showOffsetPanel: StateRef<boolean>;
    topOffset: StateRef<string>;
    sideOffset: StateRef<string>;
    bottomOffset: StateRef<string>;
    getSelectionBox: AsyncFuncRef<THREE.Box3 | undefined>;
    getSceneBox: AsyncFuncRef<THREE.Box3>;
}
export interface SectionBoxAdapter {
    setClip: (b: boolean) => void;
    setVisible: (visible: boolean) => void;
    getBox: () => THREE.Box3;
    setBox: (box: THREE.Box3) => void;
    onSelectionChanged: ISignal;
    getSelectionBox: () => Promise<THREE.Box3 | undefined>;
    getSceneBox: () => Promise<THREE.Box3>;
}
export declare function useSectionBox(adapter: SectionBoxAdapter): SectionBoxRef;
