///
import * as VIM from 'vim-webgl-viewer';
export type Entry = {
key: string | undefined;
label: string | undefined;
value: string | undefined;
};
export type Group = {
key: string | undefined;
title: string | undefined;
content: Entry[];
};
export type Section = {
key: string | undefined;
title: string;
content: Group[];
};
export type Data = {
header: Entry[] | undefined;
body: Section[] | undefined;
};
/**
* Data customization function for the BIM info panel.
* @data The data to customize.
* @source The VIM.Object or VIM.Vim from which the data was pulled.
*/
export type DataCustomization = (data: Data, source: VIM.Vim | VIM.Object3D) => Promise;
/**
* Rendering customization function for the BIM info panel.
* @data The data to render.
* @standard The standard rendering function for the data.
*/
export type DataRender = ((props: {
data: T;
standard: () => JSX.Element;
}) => JSX.Element) | undefined;
/**
* Reference object for customizing the rendering of the BIM info panel.
*/
export type BimInfoPanelRef = {
/**
* A function that customizes the data before it is rendered in the BIM info panel.
*/
onData: DataCustomization;
/**
* A function that customizes the rendering of the header of the BIM info panel.
*/
onRenderHeader: DataRender;
/**
* A function that customizes the rendering of each header entry in the BIM info panel.
*/
onRenderHeaderEntry: DataRender;
/**
* A function that customizes the rendering of each entry value of the header in the BIM info panel.
*/
onRenderHeaderEntryValue: DataRender;
/**
* A function that customizes the rendering for the body section of the BIM info panel.
*/
onRenderBody: DataRender;
/**
* A function that customizes the rendering of each section of the body in the BIM info panel.
*/
onRenderBodySection: DataRender;
/**
* A function that customizes the rendering of each group of the body in the BIM info panel.
*/
onRenderBodyGroup: DataRender;
/**
* A function that customizes the rendering for each entry of the body in the BIM info panel.
*/
onRenderBodyEntry: DataRender;
/**
* A function that customizes the rendering of each value for a single body entry in the info panel.
*/
onRenderBodyEntryValue: DataRender;
};
export declare function createBimInfoState(): BimInfoPanelRef;