/**
 * @module viw-webgl-react
 */
import React from 'react';
import { CameraRef } from '../state/cameraState';
import { TreeActionRef } from '../bim/bimTree';
import { ModalHandle } from './modal';
import { IsolationRef } from '../state/sharedIsolation';
import * as Core from '../../core-viewers';
type ClickCallback = React.MouseEvent<HTMLDivElement, MouseEvent>;
/**
 * Reference to manage context menu functionality in the viewer.
 */
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 declare function showContextMenu(position: {
    x: number;
    y: number;
} | undefined): void;
/**
 * Current list of context menu item ids. Used to find and replace items when customizing the context menu.
 */
export declare const contextMenuElementIds: {
    showControls: string;
    dividerCamera: string;
    resetCamera: string;
    zoomToFit: string;
    dividerSelection: string;
    isolateSelection: string;
    selectSimilar: string;
    hideObject: string;
    showObject: string;
    clearSelection: string;
    showAll: string;
    dividerSection: string;
    ignoreSection: string;
    resetSection: string;
    fitSectionToSelection: string;
};
/**
 * Represents a button in the context menu. It can't be clicked triggering given action.
 */
export interface IContextMenuButton {
    id: string;
    label: string;
    keyboard: string;
    action: (e: ClickCallback) => void;
    enabled: boolean;
}
/**
 * Represents a divider in the context menu. It can't be clicked.
 */
export interface IContextMenuDivider {
    id: string;
    enabled: boolean;
}
export type ContextMenuElement = IContextMenuButton | IContextMenuDivider;
/**
 * A map function that changes the context menu.
 */
export type ContextMenuCustomization = (e: ContextMenuElement[]) => ContextMenuElement[];
/**
 * Memoized version of VimContextMenu.
 */
export declare const VimContextMenuMemo: React.MemoExoticComponent<typeof ContextMenu>;
/**
 * Context menu viewer definition according to current state.
 */
export declare function ContextMenu(props: {
    viewer: Core.Webgl.Viewer;
    camera: CameraRef;
    modal: ModalHandle;
    isolation: IsolationRef;
    selection: Core.Webgl.Element3D[];
    customization?: (e: ContextMenuElement[]) => ContextMenuElement[];
    treeRef: React.MutableRefObject<TreeActionRef | undefined>;
}): import("react/jsx-runtime").JSX.Element;
export {};
