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>;
    sectionReset: AsyncFuncRef<void>;
    section: ArgActionRef<THREE.Box3>;
    showOffsetPanel: StateRef<boolean>;
    topOffset: StateRef<string>;
    sideOffset: StateRef<string>;
    bottomOffset: StateRef<string>;
}
export interface SectionBoxAdapter {
    setClip: (b: boolean) => void;
    setVisible: (visible: boolean) => void;
    getBox: () => THREE.Box3;
    fitBox: (box: THREE.Box3) => void;
    getSelectionBox: () => Promise<THREE.Box3 | undefined>;
    getRendererBox: () => Promise<THREE.Box3>;
    onSelectionChanged: ISignal;
}
export declare function useSectionBox(adapter: SectionBoxAdapter): SectionBoxRef;
