/**
 * @module public-api
 */
import * as VIM from 'vim-webgl-viewer/';
import { ContextMenuCustomization } from '../panels/contextMenu';
import { ComponentSettings } from '../settings/settings';
import { Isolation } from '../helpers/isolation';
import { ComponentCamera } from '../helpers/camera';
import { VimComponentContainer } from '../container';
import { BimInfoPanelRef } from '../bim/bimInfoData';
import { ControlBarCustomization } from '../controlbar/controlBar';
import { ComponentLoader } from './webglLoading';
import { ModalRef } from '../panels/modal';
/**
* Settings API managing settings applied to the component.
*/
export type SettingsRef = {
    /**
     * Allows updating settings by providing a callback function.
     * @param updater A function that updates the current settings.
     */
    update: (updater: (settings: ComponentSettings) => void) => void;
    /**
     * Registers a callback function to be notified when settings are updated.
     * @param callback A function to be called when settings are updated, receiving the updated settings.
     */
    register: (callback: (settings: ComponentSettings) => void) => void;
};
export type ContextMenuRef = {
    /**
    * Defines a callback function to dynamically customize the context menu.
    * @param customization The configuration object specifying the customization options for the context menu.
    */
    customize: (customization: ContextMenuCustomization) => void;
};
export type ControlBarRef = {
    /**
    * Defines a callback function to dynamically customize the control bar.
    * @param customization The configuration object specifying the customization options for the control bar.
    */
    customize: (customization: ControlBarCustomization) => void;
};
export type HelpRef = {
    /**
     * Displays the help message.
     * @param value Boolean value to show or hide the help message.
     */
    show(value: boolean): any;
    /**
     * Returns the current state of the help message.
     */
    isShow(): any;
};
/**
 * Root-level API of the Vim component.
 */
export type VimComponentRef = {
    /**
     * HTML structure containing the component.
     */
    container: VimComponentContainer;
    /**
    * Vim WebGL viewer around which the WebGL component is built.
    */
    viewer: VIM.Viewer;
    /**
    * Vim WebGL loader to download VIMs.
    */
    loader: ComponentLoader;
    /**
    * Isolation API managing isolation state in the component.
    */
    isolation: Isolation;
    /**
    * Context menu API managing the content and behavior of the context menu.
    */
    contextMenu: ContextMenuRef;
    /**
  * Context menu API managing the content and behavior of the context menu.
  */
    controlBar: ControlBarRef;
    /**
    * Settings API managing settings applied to the component.
    */
    settings: SettingsRef;
    /**
    * Message API to interact with the loading box.
    */
    modal: ModalRef;
    /**
    * Camera API to interact with the viewer camera at a higher level.
    */
    camera: ComponentCamera;
    /**
     * API To interact with the BIM info panel.
     */
    bimInfo: BimInfoPanelRef;
    dispose: () => void;
};
