import type { ViewerModelPropsStore, ViewerModelStructureStore, ViewerStoreApi } from "../store/ViewerStore";
import { type ExportedExcelFile, type ModelPropertiesExcelOptions } from "../utils/ExportUtils";
import type { BmtElementProps, BmtModelStructureNode, BmtPropertyRecord, BmtPropertySet, BmtPropertyValue } from "../Loaders/BmtLoader";
export type ViewerPropertiesExcelOptions = ModelPropertiesExcelOptions;
type ViewerModelLevelValue = BmtModelStructureNode[] | BmtPropertyRecord | BmtPropertySet[] | BmtPropertyValue;
export type ViewerModelLevel = Record<string, ViewerModelLevelValue | undefined> & {
    elements?: number[];
    modelID: number;
};
export type ViewerModelLevelsByModel = Record<number, ViewerModelLevel[]>;
export type ViewerPropertiesApi = {
    exportAllExcel: (options?: ViewerPropertiesExcelOptions) => ExportedExcelFile[];
    exportExcel: (modelID: number, options?: ViewerPropertiesExcelOptions) => ExportedExcelFile | null;
    getAllLevels: (recursive?: boolean) => ViewerModelLevelsByModel;
    getAllModelLevels: (modelID: number, recursive?: boolean) => ViewerModelLevel[];
    getModelProps: () => ViewerModelPropsStore;
    getModelStructure: () => ViewerModelStructureStore;
    getParamsByElement: (modelID: number, elementID: number) => BmtElementProps | undefined;
    getParamValueByName: (elementParams: BmtElementProps | null | undefined, paramName: string, setName?: string) => BmtPropertyValue | undefined;
    getParamValueByElement: (modelID: number, elementID: number, paramName: string, setName?: string) => BmtPropertyValue | undefined;
};
export declare function createViewerPropertiesApi(viewerStore: ViewerStoreApi): ViewerPropertiesApi;
export {};
