import * as Core from "../../core-viewers";
import { CameraRef } from './cameraState';
import { CursorManager } from '../helpers/cursor';
import { SideState } from './sideState';
import * as Icons from '../icons';
import { SectionBoxRef } from './sectionBoxState';
import { getMeasureState } from './measureState';
import { ModalHandle } from '../panels/modal';
import { IsolationRef } from './sharedIsolation';
import * as ControlBar from '../controlbar';
import { UserBoolean } from "../settings/userBoolean";
import { UltraSettings } from "../ultra/settings";
import { WebglSettings } from "../webgl/settings";
export type ControlBarSectionBoxSettings = {
    sectioningEnable: UserBoolean;
    sectioningFitToSelection: UserBoolean;
    sectioningReset: UserBoolean;
    sectioningShow: UserBoolean;
    sectioningAuto: UserBoolean;
    sectioningSettings: UserBoolean;
};
/**
 * Returns a control bar section for the section box.
 */
export declare function controlBarSectionBox(section: SectionBoxRef, hasSelection: boolean, settings: ControlBarSectionBoxSettings): ControlBar.IControlBarSection;
export type ControlBarCursorSettings = {
    cursorOrbit: UserBoolean;
    cursorLookAround: UserBoolean;
    cursorPan: UserBoolean;
    cursorZoom: UserBoolean;
};
export type ControlBarMeasureSettings = {
    measuringMode: UserBoolean;
};
export declare function controlBarMeasure(measure: ReturnType<typeof getMeasureState>, settings: ControlBarMeasureSettings): {
    id: string;
    enable: () => boolean;
    style: string;
    buttons: {
        id: string;
        enabled: () => boolean;
        isOn: () => boolean;
        tip: string;
        action: () => void;
        icon: typeof Icons.measure;
        style: typeof ControlBar.Style.buttonDefaultStyle;
    }[];
};
export declare function controlBarSettingsUltra(side: SideState, settings: UltraSettings): ControlBar.IControlBarSection;
export type ControlBarCameraSettings = {
    cameraAuto: UserBoolean;
    cameraFrameSelection: UserBoolean;
    cameraFrameScene: UserBoolean;
};
export declare function controlBarCamera(camera: CameraRef, settings: ControlBarCameraSettings): ControlBar.IControlBarSection;
export type ControlBarVisibilitySettings = {
    visibilityEnable: UserBoolean;
    visibilityClearSelection: UserBoolean;
    visibilityShowAll: UserBoolean;
    visibilityToggle: UserBoolean;
    visibilityIsolate: UserBoolean;
    visibilityAutoIsolate: UserBoolean;
    visibilitySettings: UserBoolean;
};
export declare function controlBarVisibility(isolation: IsolationRef, settings: ControlBarVisibilitySettings): ControlBar.IControlBarSection;
/**
 * Combines all control bar sections into one control bar.
 */
export declare function useControlBar(viewer: Core.Webgl.Viewer, camera: CameraRef, modal: ModalHandle, side: SideState, cursor: CursorManager, settings: WebglSettings, section: SectionBoxRef, isolationRef: IsolationRef, customization: ControlBar.ControlBarCustomization | undefined): (ControlBar.IControlBarSection | {
    id: string;
    enable: () => boolean;
    style: string;
    buttons: {
        id: string;
        enabled: () => boolean;
        isOn: () => boolean;
        tip: string;
        action: () => void;
        icon: typeof Icons.measure;
        style: typeof ControlBar.Style.buttonDefaultStyle;
    }[];
})[];
/**
 * Checks if any settings-related UI buttons are enabled
 * @param {Settings} settings - The viewer settings to check
 * @returns {boolean} True if any settings buttons are enabled
 */
export declare function anyUiSettingButton(settings: WebglSettings): boolean;
