declare module 'bimwin-api/api/index' {
  import { SelectedArg, RectSelectedArg } from "bimwin-api/api/types/BwEventTypes";
  import { ISecret, UIOptions, BWOptions, BimType, Theme, ModelOptions } from "bimwin-api/api/types/BWOptions";
  import { PropertyKeyValue } from "bimwin-api/api/types/ElementTypes";
  import { Element } from "bimwin-api/api/packages/Element";
  import { SectionBox } from "bimwin-api/bimwin/entry";
  import { Information } from "bimwin-api/api/packages/Infomation";
  import { HtmlBindHandle } from "bimwin-api/bimwin/entry";
  import { SlideSelection } from "bimwin-api/bimwin/entry";
  import { Octree } from "bimwin-api/bimwin/tool/Octree/Octree";
  import { Effect } from "bimwin-api/api/packages/Effect";
  import { ServiceAgent, Service } from "bimwin-api/api/packages/Service";
  import { ToolKit } from "bimwin-api/api/packages/ToolKit";
  import { NavigationMode, NavigationControls } from "bimwin-api/bimwin/camera/navigationControls";
  import { BombType, BomberBase, FloorByElevationBomber, AxisType, SphericalBomber, FloorByGroupsBomber, ScheduleArg, BombArgs, CubicBomber, ArrangedBomber, ScheduleBomber, ScheduleGroupBomber } from "bimwin-api/bimwin/component/bomb";
  import { ComponentBase } from "bimwin-api/bimwin/component/componentBase";
  import { navbase } from "bimwin-api/bimwin/component/navigateAxis/navaxis.base";
  import { CUTMODEL } from "bimwin-api/bimwin/component/sectionBox";
  import { SelectMode, ViewDirection, IVector3, SceneLoadOption3D, WalkthroughOption, Layout, Color4, PickModel, CameraData, WalkthroughKeyFrame, LayoutViewPort, CameraControlsType, SceneLoadProgress, BIMWinCamera, CameraType, IVector4, IColor, SceneLoadOption2D, SectionData, LightAttr, CameraViewPort, NodeMeshItem } from "bimwin-api/bimwin/types";
  import { Event, Delegate } from "bimwin-api/bimwin/event";
  import { LineMaterialParameters, LineMaterial } from "bimwin-api/bimwin/lineMesh/lineMaterial";
  import { LineSegmentsGeometry } from "bimwin-api/bimwin/lineMesh/lineSegmentsGeometry";
  import { OctDataKey, OctDataCollection, LineBufferGeometryOctData, OctData, MeshBufferGeometryOctData } from "bimwin-api/bimwin/tool/Octree/OctData";
  import { Annotation } from "bimwin-api/api/packages/Annotation";
  import { Label } from "bimwin-api/api/packages/Label";
  import { Roam } from "bimwin-api/api/packages/Roam";
  import { ITransferredLabelData } from "bimwin-api/api/types/LabelTypes";
  import { EditorControls } from "bimwin-api/bimwin/camera/editorControls";
  import { Image3D } from "bimwin-api/bimwin/component/image3d";
  import { Measure2DTool } from "bimwin-api/bimwin/entry";
  import { measurementType, MeasureTool } from "bimwin-api/bimwin/component/measureTool";
  import { InitMouseEvent2D } from "bimwin-api/bimwin/component/mouseEvent2D";
  import { OutlineNode } from "bimwin-api/bimwin/component/OutlineNode";
  import { BoundingBox } from "bimwin-api/bimwin/core/boundingBox";
  import { SharedMeshBlock, SharedContourBlock } from "bimwin-api/bimwin/core/SharedMeshBlock";
  import { Node, MeshIndexSegment, StaticMeshBlock, PriType, Mesh, StaticLineMeshBlock } from "bimwin-api/bimwin/core/staticMeshBlock";
  import { StaticScene } from "bimwin-api/bimwin/core/staticScene";
  import { CompressV1, StaticScene3D } from "bimwin-api/bimwin/core/staticScene3d";
  import { DebugLine, DebugBox } from "bimwin-api/bimwin/debug";
  import { RoamMap } from "bimwin-api/bimwin/entry";
  import { worker } from "bimwin-api/bimwin/tool/download.worker";
  import { Group, Sequence } from "bimwin-api/bimwin/tool/tween";
  import { isArray, mergeBufferGeometries, getCookie, textureToUrl, chooseTypedArray, uuid, getAllCookies } from "bimwin-api/bimwin/utils/index";
  import { MeshPhongMaterial } from "bimwin-api/BRender/MeshPhongMaterial";
  import { BwEvent } from "bimwin-api/api/packages/BwEvent";
  import { Camera } from "bimwin-api/api/packages/Camera";
  import { Light } from "bimwin-api/api/packages/Light";
  import { ModelId, Manifest, ModelNodes, Model } from "bimwin-api/api/packages/Model";
  import { Property } from "bimwin-api/api/packages/Property";
  import { Util } from "bimwin-api/api/packages/Util";
  import { Platform } from "bimwin-api/api/Platform";
  import { BIMWin2D } from "bimwin-api/bimwin/entry";
  import { BIMWin3D } from "bimwin-api/bimwin/entry";
  import { Controls } from "bimwin-api/bimwin/camera/base";
  import { EditorControls2D } from "bimwin-api/bimwin/camera/editorControls2D";
  import { HoverNode } from "bimwin-api/bimwin/component/hoverNode";
  import { Map2D } from "bimwin-api/bimwin/component/map2d";
  import { Map3D } from "bimwin-api/bimwin/entry";
  import { SVGManager } from "bimwin-api/bimwin/component/measureSvg";
  import { InitMouseEvent3D } from "bimwin-api/bimwin/component/mouseEvent3D";
  import { navdir } from "bimwin-api/bimwin/component/navigateAxis/navaxis.dir";
  import { NavigateAxis } from "bimwin-api/bimwin/component/navigateAxis/navigateAxis";
  import { RectSelection } from "bimwin-api/bimwin/component/rectSelection";
  import { Intersection, IdKey, UniqueId, Common, PrimitiveType, PositionSet } from "bimwin-api/bimwin/tool/Octree/OctreeCommon";
  import { applyClippingPlanes, ExtraParameters, intersectsInstancedMesh, intersectsMesh, intersectsLineMesh, intersectionLine } from "bimwin-api/bimwin/core/intersect";
  import { MaterialManager } from "bimwin-api/bimwin/core/materialManager";
  import { InstancedLineMaterial } from "bimwin-api/bimwin/core/share/InstancedLineMaterial";
  import { FSharedBaseNode, FSharedNode, FSharedBaseNodeFile, FSharedFileIndex } from "bimwin-api/bimwin/core/share/SharedIndex";
  import { SharedNode } from "bimwin-api/bimwin/core/share/SharedNode";
  import { StaticScene2D } from "bimwin-api/bimwin/core/staticScene2d";
  import { StaticScene3D_Shared } from "bimwin-api/bimwin/core/staticScene3d.shared";
  import { BinaryReader } from "bimwin-api/bimwin/tool/binaryReader";
  import { ShapeBox2d, TweenAnimation, UniqueProducer } from "bimwin-api/bimwin/tool/common";
  import { _FileCache, FileCache } from "bimwin-api/bimwin/tool/FileCache";
  import { FileTool } from "bimwin-api/bimwin/tool/fileTool";
  import { BwMeshOctData, BwLineOctData } from "bimwin-api/bimwin/tool/Octree/BwOctData";
  import { Octant } from "bimwin-api/bimwin/tool/Octree/Octant";
  import { BRender, BScene } from "bimwin-api/BRender/BRender";
  import { DirectionalLight } from "bimwin-api/BRender/Light";
  import { LineBaseMaterial } from "bimwin-api/BRender/LineBaseMaterial";
  import * as THREE from "three";
  export { SelectedArg, RectSelectedArg, ISecret, UIOptions, BWOptions, BimType, Theme, ModelOptions, PropertyKeyValue, Element, SectionBox, Information, HtmlBindHandle, SlideSelection, Octree, Effect, ServiceAgent, Service, ToolKit, NavigationMode, NavigationControls, BombType, BomberBase, FloorByElevationBomber, AxisType, SphericalBomber, FloorByGroupsBomber, ScheduleArg, BombArgs, CubicBomber, ArrangedBomber, ScheduleBomber, ScheduleGroupBomber, ComponentBase, navbase, CUTMODEL, SelectMode, ViewDirection, IVector3, SceneLoadOption3D, WalkthroughOption, Layout, Color4, PickModel, CameraData, WalkthroughKeyFrame, LayoutViewPort, CameraControlsType, SceneLoadProgress, BIMWinCamera, CameraType, IVector4, IColor, SceneLoadOption2D, SectionData, LightAttr, CameraViewPort, NodeMeshItem, Event, Delegate, LineMaterialParameters, LineMaterial, LineSegmentsGeometry, OctDataKey, OctDataCollection, LineBufferGeometryOctData, OctData, MeshBufferGeometryOctData, Annotation, Label, Roam, ITransferredLabelData, EditorControls, Image3D, Measure2DTool, measurementType, MeasureTool, InitMouseEvent2D, OutlineNode, BoundingBox, SharedMeshBlock, SharedContourBlock, Node, MeshIndexSegment, StaticMeshBlock, PriType, Mesh, StaticLineMeshBlock, StaticScene, CompressV1, StaticScene3D, DebugLine, DebugBox, RoamMap, worker, Group, Sequence, isArray, mergeBufferGeometries, getCookie, textureToUrl, chooseTypedArray, uuid, getAllCookies, MeshPhongMaterial, BwEvent, Camera, Light, ModelId, Manifest, ModelNodes, Model, Property, Util, Platform, BIMWin2D, BIMWin3D, Controls, EditorControls2D, HoverNode, Map2D, Map3D, SVGManager, InitMouseEvent3D, navdir, NavigateAxis, RectSelection, Intersection, IdKey, UniqueId, Common, PrimitiveType, PositionSet, applyClippingPlanes, ExtraParameters, intersectsInstancedMesh, intersectsMesh, intersectsLineMesh, intersectionLine, MaterialManager, InstancedLineMaterial, FSharedBaseNode, FSharedNode, FSharedBaseNodeFile, FSharedFileIndex, SharedNode, StaticScene2D, StaticScene3D_Shared, BinaryReader, ShapeBox2d, TweenAnimation, UniqueProducer, _FileCache, FileCache, FileTool, BwMeshOctData, BwLineOctData, Octant, BRender, BScene, DirectionalLight, LineBaseMaterial, THREE, };

}
declare module 'bimwin-api/api/packages/Annotation' {
  import Arrow from 'bimwin-api/components/Annotation/arrow.js';
  import Cloud from 'bimwin-api/components/Annotation/cloud.js';
  import Ellipse from 'bimwin-api/components/Annotation/ellipse.js';
  import FreeDraw from 'bimwin-api/components/Annotation/freeDraw.js';
  import Line from 'bimwin-api/components/Annotation/line.js';
  import Rect from 'bimwin-api/components/Annotation/rect.js';
  import Text from 'bimwin-api/components/Annotation/text.js';
  import X from 'bimwin-api/components/Annotation/x.js';
  import Konva from 'konva';
  import * as THREE from 'three';
  import { Platform } from 'bimwin-api/api/Platform';
  interface positionType {
      postions?: number[];
      postionsStart?: number[];
      postionsEnd?: number[];
      element?: Rect | Line | Arrow | Ellipse | FreeDraw | Text | Cloud | X;
      name?: string;
      instance?: Rect | Line | Arrow | Ellipse | FreeDraw | Text | Cloud | X;
      XY?: THREE.Vector3;
      initXY?: THREE.Vector3;
  }
  export class Annotation {
      private platform;
      stage: Konva.Stage;
      layer: Konva.Layer;
      activeImages: string;
      shapesAnno: (Rect | Line | Arrow | Ellipse | FreeDraw | Text | Cloud | X)[];
      postions3D: positionType[];
      Rect: Rect;
      color: string;
      width: number;
      Line: Line;
      Arrow: Arrow;
      Noval: Ellipse;
      FreeDraw: FreeDraw;
      Ntext: Text;
      fontSize: number;
      Ncloud: Cloud;
      Mark: X;
      drawClass: string;
      bimwinName: HTMLDivElement;
      tip: HTMLDivElement;
      constructor(platform: Platform);
      /**
       * 更改粗细度
       */
      changeThickness(num?: number): void;
      /**
       * 更改字体大小
       */
      changeFontSize(num?: number): void;
      /**
       * 更改颜色
       * @param {string} value hex字符串 不支持纯数字
       */
      changeColor(value: string): void;
      /**
       * 创建画板
       */
      private createDrawingBoard;
      /**
      * 绘图事件绑定
      */
      bindingEven(): {
          Rect: () => Rect;
          Line: () => Line;
          Arrow: () => Arrow;
          Noval: () => Ellipse;
          FreeDraw: () => FreeDraw;
          Ntext: () => Text;
          Ncloud: () => Cloud;
          Mark: () => X;
      };
      /**
       * 停止对应事件
       */
      stopEven(type: string): void;
      /**
       * 切换类型
       */
      switchType(type: string): void;
      /**
      * 画形状
      */
      drawShape(type: any): void;
      /**
       * 图形重绘
       */
      repaint(type: any): void;
      /**
       * 保存截图
       * @param fillStyle canvas背景
       * @returns string
       */
      saveImage(fillStyle: string | CanvasGradient): string;
      cancelAnnotation(): void;
      /** 批注清除 */
      eliminate(): void;
      /**
      * 储存图形二维点变为三维点(线)
      */
      private transformation;
      /**
       * 储存图形二维点变为三维点(矩形)
       */
      private transformationOther;
  }
  export {};

}
declare module 'bimwin-api/api/packages/BwEvent' {
  import { Delegate } from 'bimwin-api/bimwin/event';
  import { Platform } from 'bimwin-api/api/Platform';
  import { BIMWin3D } from 'bimwin-api/bimwin/bimwin3d';
  import { RectSelectedArg, SelectedArg } from 'bimwin-api/api/types/BwEventTypes';
  import { BIMWin2D } from 'bimwin-api/bimwin/bimwin2d';
  /** 常用事件 */
  export class BwEvent {
      _platform: Platform;
      OnPropertyLoaded: Delegate<any>;
      OnLabelSaving: Delegate<any>;
      OnSelected: Delegate<SelectedArg>;
      OnMounted: Delegate<HTMLDivElement>;
      OnBwCreated: Delegate<BIMWin2D | BIMWin3D>;
      OnRectSelected: Delegate<RectSelectedArg>;
      constructor(platform: Platform);
      /**
       * 初始化
       */
      Init(): void;
  }

}
declare module 'bimwin-api/api/packages/Camera' {
  import * as THREE from "three";
  import { Platform } from 'bimwin-api/api/Platform';
  import { CameraType } from 'bimwin-api/bimwin/types';
  export class Camera {
      private _platform;
      constructor(platform: Platform);
      /**
       * 获取相机参数
       */
      ExtractCamera(): any;
      /**
       * 设置相机
       * @returns cameraData playAnimationTime
       */
      SetCamera(cameraData: any, playAnimationTime?: number): void;
      /**
       * 恢复主视角
       * @returns
       */
      RestoreHome(): any;
      /**
       * 设置视角
       * @returns viewDirection 相机视角类型
       */
      SetViewDirection(viewDirection: any, playAnimation: Boolean): any;
      /**
       * 保存场景图片(返回base64格式)
       * @returns
       */
      SaveScreenImage(): any;
      /**
       * 切换相机类型
       * @param type 相机类型: 'perspective': 透视相机, 'orthographic': 正交相机
       * @returns
       */
      switchCameraType(type: CameraType): void;
      /**
       * 获取当前相机类型
       * @returns 相机类型('perspective'/'orthographic')
       */
      getCameraType(): "perspective" | "orthographic";
      /**
       * 解析JSON至ViewData
       * @param data
       * @returns
       */
      parseImportViewData(data: string): {
          id: string;
          name: any;
          shortcut: any;
          cameraData: {
              cameraType: any;
              position: THREE.Vector3;
              rotation: THREE.Euler;
              left: any;
              top: any;
              bottom: any;
              right: any;
              controlsType: any;
          };
      };
      /**
       * 相机定位
       * @param postion dgn原始坐标
       * @param target dgn原始坐标
       * @param up 上方向,原坐标
       * @param useOffset 使用偏移
       */
      LookAt(position: THREE.Vector3 | [number, number, number], target: THREE.Vector3 | [number, number, number], up: THREE.Vector3 | [number, number, number], useOffset?: boolean): void;
      /**
       * revit坐标定位(正交视图下)
       * @param origin 相机原始坐标
       * @param up 相机上方向原始坐标
       * @param right 相机右方向原始坐标
       * @param view 从屏幕里指向外的坐标(与相机朝向相反)
       */
      LookAtRevit(origin: Array<number>, up: Array<number>, right: Array<number>, view: Array<number>): void;
  }

}
declare module 'bimwin-api/api/packages/Effect' {
  import { Platform } from "bimwin-api/api/Platform";
  export class Effect {
      private _bimwin;
      private _ambient;
      private _specular;
      private _directionalLightStrength;
      private _enableShadow;
      private _shadowStrength;
      private _enableSpecularAttenuation;
      constructor(platform: Platform);
      private _sceneTraverse;
      get ambient(): number;
      set ambient(val: number);
      get specular(): number;
      set specular(val: number);
      get shadowStrength(): number;
      set shadowStrength(value: number);
      get enableSpecularAttenuation(): boolean;
      set enableSpecularAttenuation(v: boolean);
      get enableShadow(): boolean;
      set enableShadow(val: boolean);
      get directionalLightStrength(): number;
      set directionalLightStrength(val: number);
  }

}
declare module 'bimwin-api/api/packages/Element' {
  import { BombArgs, BomberBase, BombType } from 'bimwin-api/bimwin/component/bomb';
  import { Platform } from 'bimwin-api/api/Platform';
  /** 构件方法 */
  export class Element {
      private _platform;
      constructor(platform: Platform);
      /**
       * 最大化构件
       * @param ids 构件集合
       * @param isHighlight 是否高亮
       * @param ratio 放大率[0.0 - 1.0]，0.5标准
       */
      FitElements(ids: string[], isHighlight: boolean, ratio?: number): void;
      /**
       * 获取所有构件
       * @returns
       */
      GetModelElements(): Promise<any[]>;
      GetModelIds(): string[];
      /**
       * 高亮构件集合
       * @param ids
       * @param enable true：高亮；false：取消高亮
       */
      HighlightElements(ids: string[], enable?: boolean): void;
      /**
       * 使构件集合透明，透明度全局只有一种
       * @param ids
       * @param enable true：启用透明；false：取消透明
       * @param rate 透明度 [0,1], 0 完全透明，1 不透明
       */
      TransparentElements(ids: string[], enable?: boolean, value?: number): void;
      /**
       * 使构件有不同的透明度
       * @param ids
       * @param enable true：启用透明；false：取消透明
       * @param rate 透明度 [0,1], 0 完全透明，1 不透明
       */
      TransparentElementsMulti(ids: string[], enable?: boolean, value?: number): void;
      /**
       * 获取构件内容
       * @param id
       */
      ExtractElement(id: string): any;
      /**
       * 获取所有构件内容
       */
      ExtractElementsInModel(): void;
      /**
       * 设置构件颜色
       * @param ids
       * @param color
       * @param enable
       */
      SetColorElements(ids: string[], color: string, enable: boolean): void;
      /**
       * 获得构件几何
       * @param id
       */
      ExtractElementGeometry(id: any): void;
      /**
       * 修改构件几何
       * @param id
       * @param color
       * @param index
       * @param positions
       */
      ModifyElementGeometry(id: any, color: any, index: any, positions: any): void;
      /**
       * 隐藏显示构件
       * @param ids
       * @param enable
       */
      ShowElement(ids: any, enable: any): void;
      /**
       * 构件半透明
       * @param ids
       * @param enable
       */
      HalfTransparentElement(ids: any, enable: any): void;
      /**
       * 设置构件半透明度
       * @param ids
       * @param alpha
       */
      SetAlphaElement(ids: any, alpha: any): void;
      /**
       * 添加构件
       */
      AddElement(): void;
      /**
       * 炸开元素集合
       * @param bombType
       * @param arg
       * @returns
       *
       * 示例：
       * let bomb = scene.bimwin.BombNodes(1, {Groups: scene.Element.GetModelIds(), Continuous: true, MilliSecond: 2000, Bomb: true, Explosive: 1.25});
       *
       *
       */
      BombElements(bombType: BombType, arg: BombArgs): BomberBase;
      /**
       * 闪烁构件
       * @param ids 构件集合
       * @param color 颜色
       * @param speed 速度
       * @param enable 闪烁或关闭闪烁
       */
      BlinkElements(ids: string[] | string, color: number | string, speed?: number, enable?: boolean): void;
  }

}
declare module 'bimwin-api/api/packages/Infomation' {
  import { Platform } from "bimwin-api/api/Platform";
  export class Information {
      platform: Platform;
      constructor(platform: Platform);
      /**
       * 获取基本信息
       * @returns
       */
      getBaseInformation(): {
          nodeNum: number;
          meshNum: number;
          pointNum: number;
          lineNum: number;
      };
  }

}
declare module 'bimwin-api/api/packages/Label' {
  import * as THREE from 'three';
  import { Platform } from 'bimwin-api/api/Platform';
  import { ITransferredLabelData } from "bimwin-api/api/types/LabelTypes";
  type LabelId = number;
  enum LabelTypes {
      default = "default",
      balloon = "balloon",
      diffusion = "diffusion"
  }
  /** 标签 */
  export class Label {
      private _platform;
      /** 标签列表 */
      private handles;
      private typesMap;
      /** 标签容器 */
      private get hostDom();
      /** 构造函数 */
      constructor(platform: Platform);
      /**
       * 添加自定义标签
       * @param type
       * @param pos
       * @param value
       */
      AddLabel(pos: THREE.Vector3, htmlText: string): LabelId;
      AddLabelToElement(elementId: string, htmlText: string): LabelId;
      /**
       * 移除标签集合
       * @param lids
       */
      RemoveLabels(lids: LabelId[] | undefined): void;
      /**
       * 显示或隐藏label
       * @param lid 为undefined时操作的集合为所有
       * @param isShow true：显示；false：隐藏
       */
      ShowLabels(lids: LabelId[] | undefined, isShow: boolean): void;
      /**
       * 开关标签隐藏
       * @param enable
       */
      EnableLabel(enable: boolean): void;
      /** 判断ID生成方式 */
      generateID(): number;
      /**
       * 生成label标签
       */
      private createdLabel;
      /**
       * 气球标签
       * @param text
       * @returns
       */
      private createBalloonLabel;
      /**
       * 扩散效果标签
       * @param text
       * @returns
       */
      private createDiffusionLabel;
      /**
       * 添加默认标签
       * @param pos 定位点
       * @param text 文本内容
       * @returns 标签Id
       */
      AddDefaultLabel(point: THREE.Vector3, text: string, type?: string): LabelId;
      /**
       * 添加默认标签到构件中心
       * @param elementId 构件Id
       * @param text 文本内容
       * @returns 标签Id
       */
      AddDefaultLabelToElement(elementId: string, text: string): LabelId;
      /**
       * 提取所有的标签
       * @returns 所有的标签
       */
      ExtractLabels(): Map<LabelId, any>;
      /**
       * 导出标签
       *
       * 返回标签数据
       * */
      ExportLabels(): ITransferredLabelData[];
      /**
       * 导入标签
       * @param labels 标签内容数据，包括点坐标和内容
       * @param init 标签样式处理函数
       */
      ImportLabels(labels: ITransferredLabelData[], init: (text: string) => string): void;
      /**
       * 添加闪烁标签
       * @param pos 定位点
       * @param text 文本内容
       * @returns 标签Id
       */
      AddSparkleLabel(point: THREE.Vector3, text: string): LabelId;
      /**
       * 添加闪烁标签到构件中心
       * @param elementId 构件Id
       * @param text 文本内容
       * @returns 标签Id
       */
      AddSparkleLabelToElement(elementId: string, text: string): LabelId;
      /**
       * 添加图标标签
       * @param pos 定位点
       * @param text 文本内容
       * @param iconName 图标类名
       * @returns 标签Id
       */
      AddIconLabel(point: THREE.Vector3, text: string, iconName?: string): LabelId;
      /**
       * 添加图标标签到构件中心
       * @param elementId 构件Id
       * @param text 文本内容
       * @returns 标签Id
       */
      AddIconLabelToElement(elementId: string, text: string, iconName?: string): LabelId;
      /**
       * 获取所有标签类型
       * @returns
       */
      getAllDefaultTypes(): LabelTypes[];
  }
  export {};

}
declare module 'bimwin-api/api/packages/Light' {
  import { Platform } from 'bimwin-api/api/Platform';
  /** 光照 */
  export class Light {
      private _platform;
      /** 构造函数 */
      constructor(platform: Platform);
      /**
       * 设置曝光度
       * @param turn 默认为0.0正常, [-1, 100]。-1为全暗，100为全亮
       */
      SetLightIntensity(turn?: number): void;
  }

}
declare module 'bimwin-api/api/packages/Model' {
  import { Delegate } from "bimwin-api/bimwin/event";
  import * as THREE from 'three';
  import { BIMWin2D } from "bimwin-api/bimwin/entry";
  import { SelectMode } from 'bimwin-api/bimwin/types';
  import { Platform } from "bimwin-api/api/Platform";
  import { ModelOptions } from 'bimwin-api/api/types/BWOptions';
  export type ModelId = number;
  /** 场景清单 */
  export class Manifest {
      Translation: THREE.Vector3;
      Dimension: string;
      FileType: string;
      Target: THREE.Vector3;
      Height: number;
      Width: number;
      UseCamera: boolean;
  }
  /** 模型文件所属的Id列表 */
  export class ModelNodes {
      modelId: ModelId;
      fileId: string;
      nodeIds: string[];
      manifest: Manifest;
  }
  /** 模型相关的操作 */
  export class Model {
      private _platform;
      /** cad的布局 */
      LayoutViewers: BIMWin2D[];
      /** 加载的模型集合 */
      ModelIdMap: Map<ModelId, ModelNodes>;
      modelIdRowMap: Map<ModelId, ModelOptions>;
      /** 模型加载数量 */
      modelCount: number;
      onLayoutLoaded: Delegate<void>;
      onStartLoadModel: Delegate<void>;
      private modelFileIdMap;
      /** 构造函数 */
      constructor(platform: Platform);
      /** 可用的下一个Id号 */
      private _aviModelId;
      /** 场景相对于原点的偏移 */
      offset: THREE.Vector3 | undefined;
      /** 加载的主模型（第一个模型） */
      private _mainModelId;
      /**
       * 下一个可用的模型Id
       * @returns
       */
      private NextValueModelId;
      /** 加载模型 */
      LoadModel(Ids: any[] | any, onLoaded?: (fileId: any) => void, onLoading?: (fileId: any) => void): number | void | number[];
      /**
       * 加载集成模型
       */
      LoadCombineModel(combineId: any, onLoaded?: (combineId: any) => void, onLoading?: (combineId: any) => void): void;
      /**
       * 批量加载模型
       */
      LoadBatchModel(fileIds: any, onLoaded?: (fileId: any) => void, onLoading?: (fileId: any) => void): ModelId[] | ModelId;
      /**
       * 加载模型
       * @param fileId
       * @param opt
       * @param onLoaded
       * @param onLoading
       *
       * 返回模型Id
       */
      LoadModelInternalImplementation(mnodes: ModelNodes, fileId: string, opt: ModelOptions, onLoaded?: (fileId: any) => void, onLoading?: (fileId: any) => void): ModelId;
      /**
       * 移除模型
       * @param mId
       */
      RemoveModel(mId: ModelId, updateBox?: boolean): void;
      /**
       * 根据FileId移除模型
       * @param fileId
       */
      /**
       * 提取模型的所有构件Id
       * @param mId
       * @returns
       */
      ExtractElementsInModel(mId: ModelId): any[];
      /**
       * 加载属性
       * @param fileId
       * @param host
       * @param uri
       * @param onload
       * @param onfail
       */
      LoadProperty(fileId: string, host: string, uri?: string, onload?: (props: any) => void, onfail?: () => void): void;
      /**
       * 控件显示隐藏
       * @param elementId
       * @param type
       */
      ShowModel(elementId: string, type: boolean): void;
      /**
       * 控件显示隐藏
       * @param elementId
       * @param type
       */
      ExtractModel(id: string): any;
      /**
       * 导入gltf模型
       */
      LoadGltf(gltfUrl: string, point: THREE.Vector3): any;
      /** 当前布局。-1表示当前打开的不是布局 */
      private layoutIdx2d;
      /** 切换模型空间和布局空间 */
      ToggleToLayout2d(id?: number): void;
      /** 获取当前布局 */
      get CurrentLayoutViewer2d(): BIMWin2D;
      /** 返回所有的布局id */
      GetLayoutIds2d(): number[];
      /** 返回所有的布局名称 */
      GetLayoutNames2d(): string[];
      /**
       * 根据图层名称切换图层
       * @param name
       * @returns
       */
      ChangeLayout2d(name: string): void;
      /**
       * 切换至模型图层并修改多选框选中
       */
      SwitchLayout2d(id?: number): void;
      /**
       * 切换点选模型样式
       * @param type
       */
      SwitchSlideSelection(type: boolean): void;
      /**
       * 切换选择模式
       * @param selMode 选择模式，'nochoice', 'singlechoice', 'multiplechoice'
       * @returns
       */
      SwitchSelectMode(selMode: SelectMode): void;
  }

}
declare module 'bimwin-api/api/packages/Property' {
  import { Platform } from 'bimwin-api/api/Platform';
  import { PropertyKeyValue } from "bimwin-api/api/types/ElementTypes";
  /** 构件属性 */
  export class Property {
      _platform: Platform;
      constructor(platform: Platform);
      /**
       *
       * @param filter
       * @param single
       */
      ExtractIdsByfilter(props: any, filter: (gpName: any, name: any, value: any) => boolean, single?: boolean): string | string[] | undefined;
      /**
       * 提取构件属性
       * @param id
       * @returns 返回所有构件属性内容
       */
      ExtractProperty(props: any, id: string): any[] | undefined;
      /**
       * 提取模型组属性
       * @param id
       * @deprecated The should not be used
       */
      ExtractModelGroupProperty(id: string): void;
      /**
       * 根据( 模型组id/树id )获取包含的构件ids
       * @deprecated The should not be used
       */
      GetNodesByModelGroupId(id: string): void;
      /**
       * 根据( 空间id/树id )获取包含的构件ids
       * @deprecated The should not be used
       */
      GetNodesBySpaceTreeId(id: string): void;
      /**
       * 提取空间属性
       * @param id
       * @deprecated The should not be used
       */
      ExtractSpaceTreeProperty(id: string): void;
      /**
       * 查询构件对应的所有属性
       * @param id 构件id
       * @param filter 过滤函数.(groupName, name, value) => boolean
       * @param single true:查到第一条满足条件的；false：查找所有满足条件的
       * @returns
       */
      ExtractPropertyByFilter(props: any, id: string, filter: (groupName: any, name: any, value: any) => boolean, single?: boolean): PropertyKeyValue | PropertyKeyValue[] | undefined;
  }

}
declare module 'bimwin-api/api/packages/Roam' {
  import { TwoDimension } from "bimwin-api/bimwin/component/TwoDimension";
  import { SelectMode, WalkthroughKeyFrame } from "bimwin-api/bimwin/types";
  import * as THREE from "three";
  import { Platform } from "bimwin-api/api/Platform";
  export class Roam {
      platform: Platform;
      div: HTMLElement;
      isRoaming: boolean;
      events: Map<string, any>;
      twoDimension: TwoDimension;
      selectMode: SelectMode;
      /**
       * 漫游地图所在DOM
       */
      mapDom: HTMLElement;
      /**
       * 和漫游地图相关的球
       */
      mapSphere: THREE.Sphere;
      /**
       * 用于回收帧渲染事件
       */
      private mapLastFrame;
      constructor(platfrom: Platform);
      isMobile(): RegExpMatchArray;
      /**
       * 进入漫游模式
       * @returns
       */
      startRoam(dom: string | HTMLDivElement): void;
      private setTopCamera;
      /**
       * 二维地图映射实际三维位置
       */
      private twoD2ThreeD;
      /**
       * 三维位置映射到二维地图
       */
      private threeD2twoD;
      private mapClick;
      /**
       * 摧毁地图
       */
      destoryMap(): void;
      /**
       * 创建顶部视图
       */
      createTopView(dom: HTMLElement): void;
      /**
       * 制定一条直线路径以防止视角偏离
       */
      directionalAssistance(): void;
      /**
       * 关闭漫游模式
       * @returns
       */
      stopRoam(): void;
      /**
       * 设置漫游移动速度
       * @param speed
       */
      setSpeed(speed: number): void;
      /**
       * 添加漫游路径点
       * @return 返回漫游点
       */
      addRoamPoint(): WalkthroughKeyFrame;
      /**
       * 播放漫游动画
       * @param arr 传入帧数组
       * @param opts 选项，包含播放时间
       * @returns
       */
      playAnimation(arr: Array<WalkthroughKeyFrame>, speed?: number): Promise<void>;
      /**
       * 设置漫游是否有重力效果
       */
      setGravityEffect(bool: boolean): void;
      /**
       * 设置漫游是否有碰撞效果
       */
      setCollisionEffect(bool: boolean): void;
      /**
       * 设置开启第三人称漫游
       */
      setThirdPerson(): void;
      setFirstPerson(): void;
      /**
       * 重置视角位置
       */
      resetVisualAnglePosition(x?: number | THREE.Vector3, y?: number, z?: number): void;
  }

}
declare module 'bimwin-api/api/packages/Service' {
  import { ISecret } from 'bimwin-api/api/types/BWOptions';
  import { Platform } from 'bimwin-api/api/Platform';
  export type ServiceAgent = {
      fileInfo?: {
          url: string;
          intercept?: (obj: any) => any;
      };
      fileList?: {
          url: string;
          intercept?: (obj: any) => any;
      };
      combineListUri: {
          url: string;
      };
      apiVersion?: number;
  };
  /** 服务 */
  export class Service {
      /** 网络地址 */
      host: string;
      agent: ServiceAgent;
      auth: ISecret;
      platform: Platform;
      /** 构造函数 */
      constructor(_platform: Platform, host: string, auth?: ISecret, agent?: ServiceAgent);
      /**
       * 设置授权cookie
       * @param auth
       */
      private SetAuthCookies;
      /**
       * fetch
       * @param uri
       * @param opt
       * @param onsuccess
       * @param onfail
       */
      fetch(uri: string, opt: object, onsuccess: any, onfail: any): void;
      /**
       * 获得授权头
       * @returns
       */
      private GetAuthHeaders;
      /**
       * 获得文件信息
       * @param uri
       * @param onsucc
       * @param onfail
       */
      GetFileInfo(fileId: string, onsucc?: any, onfail?: any): void;
      /**
       * 获得文件类型
       * @param fileId
       */
      GetFileBimType(fileId: string, callback: any): void;
      /**
       * 获取文件列表
       * @param fileId
       * @param onsucc
       * @param onfail
       */
      GetFileList(fileId: string, onsucc?: any, onfail?: any): void;
      /**
       * 获取集成文件列表
       * @param combineId
       * @param onsucc
       * @param onfail
       */
      GetCombineFileList(combineId: string, onsucc?: any, onfail?: any): void;
      /**
       *
       * @param uri
       * @param onsucc
       * @param onfail
       */
      Get(uri: string, onsucc?: any, onfail?: any): void;
      GetFile(uri: string, onsucc?: any, onfail?: any): void;
  }

}
declare module 'bimwin-api/api/packages/ToolKit' {
  /*********************
   ** 文件说明 各种小的工具
   ** 创建时间 20211118
   ** 创建人   樊永炼
  **********************/
  import { RectSelection } from "bimwin-api/bimwin/component/rectSelection";
  import { _FileCache } from 'bimwin-api/bimwin/tool/FileCache';
  import { Platform } from 'bimwin-api/api/Platform';
  /** 小的工具集 */
  export class ToolKit {
      _platform: Platform;
      RectSelection: RectSelection;
      _fileCache: _FileCache;
      /**
       * 构造函数
       * @param platform
       */
      constructor(platform: Platform);
      /**
       * 初始化
       */
      Init(): void;
  }

}
declare module 'bimwin-api/api/packages/Util' {
  import * as THREE from "three";
  import { Platform } from 'bimwin-api/api/Platform';
  /** 通用方法 */
  export class Util {
      _platform: Platform;
      constructor(platform: Platform);
      /**
       * 画线
       * @param st 起点
       * @param ed 终点
       * @param clr 颜色
       */
      DrawLine(st: THREE.Vector3, ed: THREE.Vector3, clr: THREE.Color): void;
  }

}
declare module 'bimwin-api/api/Platform' {
  import * as THREE from "three";
  import { BIMWin2D, BIMWin3D } from "bimwin-api/bimwin/entry";
  import { Annotation } from 'bimwin-api/api/packages/Annotation';
  import { BwEvent } from 'bimwin-api/api/packages/BwEvent';
  import { Camera } from 'bimwin-api/api/packages/Camera';
  import { Element } from 'bimwin-api/api/packages/Element';
  import { Information } from "bimwin-api/api/packages/Infomation";
  import { Label } from 'bimwin-api/api/packages/Label';
  import { Light } from 'bimwin-api/api/packages/Light';
  import { Model } from 'bimwin-api/api/packages/Model';
  import { Property } from 'bimwin-api/api/packages/Property';
  import { Roam } from "bimwin-api/api/packages/Roam";
  import { Service } from 'bimwin-api/api/packages/Service';
  import { ToolKit } from 'bimwin-api/api/packages/ToolKit';
  import { Util } from 'bimwin-api/api/packages/Util';
  import { BWOptions, Theme } from 'bimwin-api/api/types/BWOptions';
  import { Effect } from "bimwin-api/api/packages/Effect";
  /** bimwin平台 */
  export class Platform {
      /** 版本 */
      Version: string;
      /** 服务接口 */
      Service: Service;
      /** 模型 */
      Model: Model;
      /** 构件 */
      Element: Element;
      /** 标签 */
      Label: Label;
      /** Annotation */
      Annotation: Annotation;
      /** Camera */
      Camera: Camera;
      /** 常用事件 */
      BwEvent: BwEvent;
      /** 光照 */
      Light: Light;
      /** 漫游 */
      Roam: Roam;
      /** 基本信息 */
      Information: Information;
      /** 实用工具 */
      Util: Util;
      /** 属性 */
      Property: Property;
      /** 小的工具集 */
      ToolKit: ToolKit;
      /** 测试示例 */
      /** bimwin对象 */
      private _bimwin;
      Effect: Effect;
      get bimwin(): BIMWin2D | BIMWin3D;
      /** bimwin对象名字 */
      bimwinName: string;
      /** 初始化选项 */
      options: BWOptions;
      /** 构造函数 */
      constructor(options: BWOptions);
      bridgingOptions(options: BWOptions): void;
      HandleThemeColor(theme: Theme): void;
      /**
       * 初始化必要事件监听
       */
      addEvenList(): void;
      /**
       * 打开debugUI
       */
      openDebugUI(): void;
      /**
       * 初始化
       */
      Init(): Platform;
      /**
       * 销毁整个webgl
       */
      dispose(): Promise<unknown>;
      /**
       * 执行动作
       */
      private actions;
      /**
       * bimwin初始化后
       */
      OnReady(): void;
      /**
       * bimwin对象准备好了再执行
       * @param action
       * @returns
       */
      Ready(action: () => void): Platform;
      /**
       * 初始化bimwin对象
       * @param dom
       * @param type
       */
      private InitBimWin;
      /**
       * 生成bimwin实例的惟一名字，在多个实例存在时用来区分对象
       * @returns
       */
      private GetBimwinName;
      /**
       * 设置背景颜色
       * @param clr 颜色。"#ff00ff"
       */
      SetBackgroundColor(clr: string): void;
      /**
       * 适配向量。当前向量空间为y向上，z指向屏幕外面。当前场景标准单位为米
       * @param x x坐标
       * @param y y坐标
       * @param z z坐标
       * @param unit 单位。默认为1。1代表米；0.001代表毫米；1000代表千米
       * @returns
       */
      AdaptVector3(x: number, y: number, z: number, unit?: number): THREE.Vector3;
  }

}
declare module 'bimwin-api/api/types/BwEventTypes' {
  import * as THREE from 'three';
  /**
   * 构件被选择时返回的参数
   */
  export interface SelectedArg {
      hit: boolean;
      id?: string | string[];
      v2?: THREE.Vector2;
      v3?: THREE.Vector3;
      multi?: string[];
  }
  /**
   * 框选构件集合
   */
  export interface RectSelectedArg {
      pt0: THREE.Vector2;
      pt1: THREE.Vector2;
      ids: string[];
  }

}
declare module 'bimwin-api/api/types/BWOptions' {
  import * as THREE from 'three';
  import { ViewDirection } from "bimwin-api/bimwin/entry";
  import { ServiceAgent } from 'bimwin-api/api/packages/Service';
  /** token */
  export interface ISecret {
      [key: string]: string;
  }
  export type BimType = "3D" | "2D";
  export interface Theme {
      primaryColor?: string;
      headerColor?: string;
      borderColor?: string;
      fontColor?: string;
  }
  /** 环境选项 */
  export interface BWOptions {
      el: string | HTMLDivElement;
      url: string;
      modelUrl?: string;
      online?: boolean;
      secret?: ISecret;
      unit?: string;
      isShowAnimationClose?: Boolean;
      isShowDebugUI: boolean;
      isShowTree: boolean;
      isShowToolbar: Boolean;
      isShowMenu: Boolean;
      isShowAnimation?: boolean;
      type?: BimType;
      loadLineMesh: boolean;
      background?: string;
      isShowToolbarButton: boolean;
      isShowTip?: boolean;
      isShowSlideSelection?: boolean;
      isShowLayout?: boolean;
      theme?: Theme;
      isVue?: boolean;
      isFileCache?: boolean;
      loadingStyle?: string;
      isHover?: boolean;
      agent?: ServiceAgent;
      rotateAround?: "near" | "center";
      apiVersion?: number;
      isCombine?: boolean;
      showTitle?: boolean;
  }
  /** UI选项 */
  export interface UIOptions {
      url?: string;
      type?: string;
      unit?: string;
      isShowAnimationClose: Boolean;
      isShowMenu: Boolean;
      isShowToolbar: Boolean;
      isShowDebugUI: Boolean;
      isShowTree: Boolean;
      isShowAnimation?: boolean;
      isShowToolbarButton: boolean;
      createName?: string;
      isShowTip?: boolean;
      isShowSlideSelection?: boolean;
      isShowLayout?: boolean;
      background?: string;
      loadingStyle?: string;
      isHover?: boolean;
  }
  /** 模型文件选项 */
  export interface ModelOptions {
      sceneMatrix?: THREE.Matrix4;
      fitView: boolean;
      viewDirection: ViewDirection;
      viewLayout2d?: boolean;
      nodeIdPrefix?: string;
      id?: string;
  }

}
declare module 'bimwin-api/api/types/ElementTypes' {
  export interface PropertyKeyValue {
      GroupName: string;
      Name: string;
      Value: string;
  }

}
declare module 'bimwin-api/api/types/LabelTypes' {
  /**
   * 传输的标签数据
   */
  export interface ITransferredLabelData {
      text: string;
      x: number;
      y: number;
      z: number;
  }

}
declare module 'bimwin-api/bimwin/bimwin2d' {
  import * as THREE from 'three';
  import { EditorControls2D } from 'bimwin-api/bimwin/camera/editorControls2D';
  import { HoverNode } from 'bimwin-api/bimwin/component/hoverNode';
  import { BoundingBox } from 'bimwin-api/bimwin/core/boundingBox';
  import { Intersection } from 'bimwin-api/bimwin/core/intersect';
  import { Node } from 'bimwin-api/bimwin/core/staticMeshBlock';
  import { StaticScene2D } from "bimwin-api/bimwin/core/staticScene2d";
  import { Delegate } from "bimwin-api/bimwin/event";
  import { Octree } from 'bimwin-api/bimwin/tool/Octree/Octree';
  import { CameraData, IColor, Layout, LayoutViewPort, SceneLoadOption2D, SceneLoadProgress, SelectMode } from 'bimwin-api/bimwin/types';
  /**
   * BIMWin二维图形引擎
   */
  export class BIMWin2D {
      cursor: any;
      hostDiv: HTMLDivElement;
      canvas: HTMLCanvasElement;
      /**THREE场景 */
      scene: THREE.Scene;
      /**相机 */
      camera: THREE.OrthographicCamera;
      cameraControls: EditorControls2D;
      /** 插件集合 */
      plugins: any;
      /**THREEWebGLRenderer */
      renderer: THREE.WebGLRenderer;
      treshold: number;
      selectMode: SelectMode;
      staticScene: StaticScene2D;
      highlightSet: Set<string>;
      private hideSet;
      isMeasure: boolean;
      private mainDiv;
      private handles;
      /**悬浮显示节点 */
      hoveNode: HoverNode;
      /**高亮节点 */
      higlightNode: HoverNode;
      onPickPoint: Delegate<Intersection>;
      /**
       * 滚轮滚动事件
       */
      onWheel: Delegate<WheelEvent>;
      /**
       * 鼠标移动事件
       */
      onMouseMove: Delegate<MouseEvent>;
      /**
       * 鼠标按下事件
       */
      onMouseDown: Delegate<MouseEvent>;
      /**
       * 鼠标抬起事件
       */
      onMouseUp: Delegate<MouseEvent>;
      /**
       * 鼠标点击事件
       */
      onMouseClick: Delegate<MouseEvent>;
      /**
       * 键盘按键按下事件
       */
      onKeyDown: Delegate<KeyboardEvent>;
      /**
       * 键盘按键抬起事件
       */
      onKeyUp: Delegate<KeyboardEvent>;
      /**
       * 聚焦事件
       */
      onFocus: Delegate<FocusEvent>;
      /**
       * 脱焦事件
       */
      onBlur: Delegate<FocusEvent>;
      /**
       * 触摸开始事件
       */
      onTouchStart: Delegate<TouchEvent>;
      /**
       * 拖动事件
       */
      onTouchMove: Delegate<TouchEvent>;
      /**
       * 拖动中断事件
       */
      onTouchCancel: Delegate<TouchEvent>;
      /**
       * 触摸结束事件
       */
      onTouchEnd: Delegate<TouchEvent>;
      /**
       * 当即将执行渲染时事件 传入的参数为上一帧的间隔
       */
      onRender: Delegate<number>;
      /**
       * 执行渲染后时事件
       */
      onRenderAfter: Delegate<void>;
      /**
       * 浏览器缩放事件
       */
      onResize: Delegate<number>;
      /**
       * 场景加载完毕事件
       */
      onSceneLoaded: Delegate<string>;
      /**
       * 模型加载完成事件 如果多个模型同时加载会在全部加载完后触发
       */
      onModelLoaded: Delegate<void>;
      /**
       * 场景加载进度事件
       */
      onSceneLoadProgress: Delegate<SceneLoadProgress>;
      /**
       * 当画板大小变动时
       */
      onCanvasSizeChanged: Delegate<THREE.Vector2>;
      /**
       * 布局
       */
      Layout?: Layout;
      Visible: boolean;
      /**
       * 结点八叉树
       */
      octree: Octree;
      onAppendLayoutMenu: Delegate<any[]>;
      onSelectModel: Delegate<string>;
      /**
       * 实例化BIMWin3D引擎
       * @param hostDiv
       */
      constructor(hostDiv: HTMLDivElement | string, visible?: boolean);
      dispose(): Promise<unknown>;
      /**
       * 生成八叉树
       */
      private GenerateOctree;
      /**
       * 通过Url地址加载模型
       * @param root 模型根目录
       * @param fileName 模型索引文件名
       */
      loadBWSceneFormUrl(root: string, fileName: string, option?: SceneLoadOption2D): Promise<void>;
      /**
       * 通过鼠标坐标获取场景射线
       * @param offsetX 鼠标偏移X轴
       * @param offsetY 鼠标偏移Y轴
       * @returns 射线实例
       */
      getRaycaster(offsetX: number, offsetY: number): THREE.Raycaster;
      /**
       * 执行射线与模型的相交计算
       * @param raycaster 射线
       * @returns 射线与模型相交计算返回结果
       */
      intersectsLineMesh(raycaster: THREE.Raycaster): Intersection;
      /**
       * 设置鼠标点选模式
       * @param selectMode 点选模式
       */
      setSelectMode(selectMode: SelectMode): void;
      /**
       * 重新计算外包围盒(一般用不到)
       * @param updateMeshBoundingBox 是否重新计算Mesh的点集数据
       */
      updateBoundBox(updateMeshBoundingBox: boolean): void;
      /**
       * 重置视口位置到模型中心
       */
      resetViewport(): void;
      /** 移动视口到指定位置
       * @param centreX 视口中心点X坐标
       * @param centreY 视口中心点Y坐标
       * @param width 视口宽度
       * @param height 视口高度
       */
      moveViewport(centreX?: number, centreY?: number, width?: number, height?: number): void;
      /**
       * 获取当前相机下的场景比例尺
       * @returns 每像素在场景内的长度
       */
      getSceneScale(): number;
      /**
       * 获取场景内加载的所有节点实例
       * @returns 节点列表
       */
      getNodes(): Node[];
      /**
       * 将指定的节点列表移除出场景
       * @param ids 节点Id
       * @param updateBoundBox 是否重新计算外包围盒
       */
      removeNodes(ids: string[], updateBoundBox?: boolean): void;
      /**
       * 将指定的节点应用矩阵位置转换
       * @param ids
       * @param matrix
       * @returns
       */
      nodesApplyMatrix(ids: string[], matrix: THREE.Matrix4): void;
      /**
       * 移除所有的构件 清空场景
       */
      clearScene(): void;
      /**
       * 二维点转三维点
       * @param x 轴位置
       * @param y 轴位置
       * @returns
       */
      project(x: number, y: number, ndcZ?: number): THREE.Vector3;
      /**
       * 获取节点列表的外包围盒
       * @param ids 节点Id
       * @returns 包围盒实例
       */
      getNodesBoundingBox(ids: string[]): BoundingBox;
      /**
       * 获取场景的外包围盒
       * @returns 包围盒实例
       */
      getSceneBoundingBox(): BoundingBox;
      /**
       * 设置相机控制器是否启用
       * @param isEnable 是否启用
       */
      setCameraControlsIsEnable(isEnable: boolean): void;
      /**
       * 获取当前的相机信息
       */
      getCameraData(): CameraData;
      /**
       * 将当前的相机状态设置到场景
       * @param cameraData 相机状态
       */
      setCameraData(cameraData: CameraData): void;
      /**
       * 获取高亮材质
       */
      getHighlightMaterial(): THREE.Material;
      /**
       * 获取着色材质
       */
      getColorMaterial(): THREE.Material;
      /**
       * 获取线框高亮材质
       */
      getLineHighlightMaterial(): THREE.Material;
      /**
       * 获取线框着色材质
       */
      getLineColorMaterial(): THREE.Material;
      /**
       * 设置高亮材质
       */
      setHighlightMaterial(highlightMaterial: THREE.Material): void;
      /**
       * 设置着色材质
       */
      setColorMaterial(colorMaterial: THREE.Material): void;
      /**
       * 设置线框高亮材质
       */
      setLineHighlightMaterial(lineHighlightMaterial: THREE.Material): void;
      /**
       * 设置线框着色材质
       */
      setLineColorMaterial(lineColorMaterial: THREE.Material): void;
      /**
       * 获取高亮列表 [!只读!]
       */
      getNodeHighlightSet(): ReadonlySet<string>;
      /**
       * 获取高亮列表 [!只读!]
       */
      getNodeHighlightList(): Array<string>;
      /**
       * 获取隐藏列表 [!只读!]
       */
      getNodeHideSet(): ReadonlySet<string>;
      /**
       * 取消所有构件的高亮
       */
      clearAllNodesHighlight(): void;
      /**
       * 取消所有构件的隐藏
       */
      clearAllNodesHide(): void;
      /**
       * 设置指定节点列表高亮
       * @param ids 节点列表
       * @param isHighlight 是否高亮
       */
      setNodesHighlight(ids: string[], isHighlight: boolean): void;
      /**
       * 切换指定节点列表的高亮
       * @param ids 节点列表
       */
      switchNodesHighlight(ids: string[]): void;
      /**
       * 设置指定节点列表显隐
       * @param ids 节点列表
       * @param isVisible 是否显示
       */
      setNodesVisible(ids: string[], isVisible: boolean): void;
      /**
       * 设置指定节点列表的状态值
       * @param ids 节点列表
       * @param state 状态值 [隐藏:-1] [高亮:0] [材质:1] [半透明:2] [着色:3]
       */
      setNodesState(ids: string[], state: number): void;
      /**
       * 设置所有节点列表的状态值
       * @param ids 节点列表
       * @param state 状态值 [隐藏:-1] [材质:0] [高亮:1] [着色:2]
       */
      setAllNodesState(state: number): void;
      /**
       * 设置指定节点列表的白模线框颜色(需要配合节点状态值是3)
       * @param ids 节点列表
       * @param hexColor 颜色 例: '#DDFF77'
       */
      setNodesClayColor(ids: string[], hexColor: string): void;
      /**
       * 设置所有节点列表的白模颜色(需要配合节点状态值是3)
       * @param hexColor 颜色 例: '#DDFF77'
       */
      setAllNodesClayColor(hexColor: string): void;
      /**
       * 设置指定节点列表的白模线框颜色(需要配合节点状态值是3)
       * @param ids 节点列表
       * @param hexColor 颜色 例: '#DDFF77'
       */
      setNodesLineClayColor(ids: string[], hexColor: string): void;
      /**
       * 设置所有节点列表的白模线框颜色(需要配合节点状态值是3)
       * @param hexColor 颜色 例: '#DDFF77'
       */
      setAllNodesLineClayColor(hexColor: string): void;
      /**
       * 设置悬浮节点
       * @param id 悬浮节点的Id
       */
      setHoverNode(id: string): void;
      /**
       * 打开悬浮显示
       */
      showHover(): void;
      /**
       * 关闭悬浮显示
       */
      hideHover(): void;
      /**
       * 设置悬浮颜色
       * @param color 颜色
       */
      setHoverColor(color: IColor): void;
      /**
       * 获取canvas
       * @returns
       */
      getCanvas(): HTMLCanvasElement;
      /**
       * 设置场景背景颜色
       * @param color 颜色
       */
      setSceneBackgroundColor(color: string): void;
      /**
       * 异步点选模型上的一个点，并返回点选信息
       * 如果返回null则代表取消了点选
       */
      pickPoint(): Promise<Intersection>;
      /**
       * 取消当前的点选等待直接返回
       */
      cancelPickPoint(): void;
      /**
       * 将三维模型内的点投影到HtmlCanvas坐标
       * @param point 要投影的三维场景坐标
       * @returns HtmlCanvas坐标
       */
      unprojectPoint(point: THREE.Vector3): THREE.Vector3;
      /**
       * 执行测量 (在执行过程中可以点击鼠标右键终止测量)
       */
      startMeasure(cd?: any): void;
      /**
       * 终止测量
       */
      stopMeasure(): void;
      SetVisible(visible?: boolean): void;
      RenderViewport(vp: LayoutViewPort): void;
      RenderWithLayout(): void;
      OnViewChanged(): void;
      RegisterViewportChanged(): void;
      /**
       * 与射线相交的信息
       * @param ray
       * @param radiusForLine
       * @returns
       */
      IntersectWithRay(ray: THREE.Ray, radiusForLine?: number): Intersection;
      /**绘制视口 */
      DrawViewportTest(vp: LayoutViewPort): void;
      DrawLineTest(p0: THREE.Vector3, p1: THREE.Vector3, color: number): void;
      DrawLineTestArray(p0: number[], p1: number[], color: number): void;
      /**
       * 构件集合最大化
       * @param ids 构件集合
       * @param ratio 缩放比率，[0.0 - 1.0]，标准0.5
       * @returns
       */
      fitElements(ids: string[], ratio?: number): void;
      /**
       * 包围盒当前视角最大化显示
       * @param box 包围盒
       * @param camera 相机
       * @param ratio 缩放比率，[0.0 - 1.0]，标准0.5
       */
      fitBox(box: THREE.Box3, camera: THREE.OrthographicCamera, ratio?: number): void;
  }

}
declare module 'bimwin-api/bimwin/bimwin3d' {
  import * as THREE from 'three';
  import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer';
  import { BWOptions } from 'bimwin-api/api/index';
  import { Controls } from 'bimwin-api/bimwin/camera/base';
  import { BombArgs, BomberBase, BombType } from 'bimwin-api/bimwin/component/bomb';
  import { NavigateAxis } from 'bimwin-api/bimwin/component/navigateAxis/navigateAxis';
  import { OutlineNode } from 'bimwin-api/bimwin/component/OutlineNode';
  import { BoundingBox } from 'bimwin-api/bimwin/core/boundingBox';
  import { Intersection } from 'bimwin-api/bimwin/core/intersect';
  import { Node } from 'bimwin-api/bimwin/core/staticMeshBlock';
  import { StaticScene3D } from 'bimwin-api/bimwin/core/staticScene3d';
  import { Delegate } from 'bimwin-api/bimwin/event';
  import { Octree } from 'bimwin-api/bimwin/tool/Octree/Octree';
  import { BIMWinCamera, CameraControlsType, CameraData, CameraType, IVector3, IVector4, SceneLoadOption3D, SceneLoadProgress, SectionData, SelectMode, ViewDirection, WalkthroughKeyFrame, WalkthroughOption } from 'bimwin-api/bimwin/types';
  import { BRender, BScene } from 'bimwin-api/BRender/BRender';
  /**
   * BIMWin三维图形引擎
   */
  export class BIMWin3D {
      cursor: any;
      hostDiv: HTMLDivElement;
      canvas: HTMLCanvasElement;
      /**THREE场景 */
      scene: BScene;
      group: THREE.Group;
      /**相机 */
      camera: BIMWinCamera;
      cameraControls: Controls;
      private cameraAnimation;
      /**THREEWebGLRenderer */
      renderer: BRender;
      perspectiveCamera: any;
      onPlayAnimation: any;
      orthographicCamera: any;
      private lockCameraKeys;
      private lockSelectKeys;
      selectMode: SelectMode;
      staticScene: StaticScene3D;
      highlightSet: Set<string>;
      private hideSet;
      private navigationSpeed;
      private zoomSpeed;
      isMeasure: boolean;
      mainDiv: any;
      private handles;
      /** 导向体控件 */
      nav: NavigateAxis;
      /** 插件集合 */
      plugins: any;
      centerPointDiv: any;
      showCenterPoint: boolean;
      onPickPoint: Delegate<Intersection>;
      /**
       * 滚轮滚动事件
       */
      onWheel: Delegate<WheelEvent>;
      /**
       * 鼠标移动事件
       */
      onMouseMove: Delegate<MouseEvent>;
      /**
       * 鼠标按下事件
       */
      onMouseDown: Delegate<MouseEvent>;
      /**
       * 鼠标抬起事件
       */
      onMouseUp: Delegate<MouseEvent>;
      /**
       * 悬停在构件上的事件
       */
      onHover: Delegate<Intersection>;
      /**
       * 鼠标点击事件
       */
      onMouseClick: Delegate<MouseEvent>;
      /**
       * 鼠标双击
       */
      onDblclick: Delegate<MouseEvent>;
      /**
       * 键盘按键按下事件
       */
      onKeyDown: Delegate<KeyboardEvent>;
      /**
       * 键盘按键抬起事件
       */
      onKeyUp: Delegate<KeyboardEvent>;
      /**
       * 聚焦事件
       */
      onFocus: Delegate<FocusEvent>;
      /**
       * 脱焦事件
       */
      onBlur: Delegate<FocusEvent>;
      /**
       * 触摸开始事件
       */
      onTouchStart: Delegate<TouchEvent>;
      /**
       * 拖动事件
       */
      onTouchMove: Delegate<TouchEvent>;
      /**
       * 拖动中断事件
       */
      onTouchCancel: Delegate<TouchEvent>;
      /**
       * 触摸结束事件
       */
      onTouchEnd: Delegate<TouchEvent>;
      /**
       * 当即将执行渲染时事件 传入的参数为上一帧的间隔
       */
      onRender: Delegate<number>;
      /**渲染之后的事件 */
      onRenderAfter: Delegate<void>;
      /**渲染之之前的事件 */
      onRenderBefore: Delegate<void>;
      /** 相机更新并且渲染之后中的事件 */
      onCameraUpdated: Delegate<void>;
      /**
       * 场景加载完毕事件
       */
      onSceneLoaded: Delegate<string>;
      /**
       * 浏览器缩放事件
       */
      onResize: Delegate<number>;
      /**
       * 模型加载完成事件 如果多个模型同时加载会在全部加载完后触发
       */
      onModelLoaded: Delegate<void>;
      /**
       * 场景加载进度事件
       */
      onSceneLoadProgress: Delegate<SceneLoadProgress>;
      onShowHideComponent: Delegate<{
          ids: Array<string>;
          bool: boolean;
      }>;
      onShowHideAllComponent: Delegate<{
          bool: boolean;
      }>;
      onTransparentComponent: Delegate<{
          ids: Array<string>;
          trans: boolean;
      } | {
          isAll: boolean;
          trans: boolean;
      }>;
      onAttributeShow: Delegate<{
          ids: string[];
      }>;
      onAppendTreeStore: Delegate<any>;
      onAppendLayoutMenu: Delegate<any[]>;
      onSelectModel: Delegate<string>;
      onOutlineChange: Delegate<boolean>;
      onSectionChange: Delegate<boolean>;
      onAxisSectionChange: Delegate<boolean>;
      /**
       * 结点八叉树
       */
      octree: Octree;
      /** 后期效果处理 */
      composer: EffectComposer;
      enableShadow: boolean;
      enableSSAO: boolean;
      acceptShadowPlane: THREE.Mesh;
      renderTest: boolean;
      centerPointName: string;
      outlineNode: OutlineNode;
      options: BWOptions;
      onStartRoam: Delegate<any>;
      onEndRoam: Delegate<any>;
      onFallOutOfTheMapBorder: Delegate<any>;
      meshPhongMaterial: THREE.ShaderMaterial;
      needUpdateMaterial: THREE.ShaderMaterial[];
      shadow: {
          camera: THREE.OrthographicCamera;
          map: THREE.WebGLRenderTarget;
          shadowMapSize: number;
      };
      onIdle: Delegate<any>;
      animationPlaying: boolean;
      /**
       * 实例化BIMWin3D引擎
       * @param hostDiv
       */
      constructor(hostDiv: HTMLDivElement | string, options?: BWOptions);
      dispose(): Promise<unknown>;
      setBWOptions(key: string, value: string): void;
      /**
       * 获取单位像素大小
       */
      getUnitSize(): number;
      /**
       * 设置导向体的css属性
       */
      setNavigateAxisCss(css: any): void;
      /** 相机更新监控器参数*/
      private _cameraMonitor;
      /** 重置相机监控器 */
      ResetCameraMonitor(): void;
      /** 判断当前帧是否可渲染
       *
       * update true:更新下一帧，false不更新下一帧
       * */
      private CanRender;
      /**
       * 生成八叉树
       */
      private GenerateOctree;
      /** 曝光度 */
      private rate;
      /** 灯光 */
      private lights;
      bLights: any[];
      /**
       * 设置曝光度
       * @param turn [0, 1.0], 0为全黑，0.5为正常，1.0为全亮
       */
      SetIntensity(turn?: number): void;
      /**
      * 启用阴影
      */
      StartUsingShadow(enable?: boolean): void;
      /**
       * 启用SSAO
       */
      StartUsingSSAO(enable?: boolean): void;
      /**
       * 初始化光照
       */
      InitLight(): void;
      /**
       * 通过Url地址加载模型
       * @param root 模型根目录
       * @param fileName 模型索引文件名
       */
      loadBWSceneFormUrl(root: string, fileName: string, option?: SceneLoadOption3D): Promise<void>;
      /**
       * 获取canvas
       * @returns
       */
      getCanvas(): HTMLCanvasElement;
      /**
       * 将canvas截图保存为base64
       * @returns
       */
      saveCanvas(): string;
      /**
       * 通过鼠标坐标获取场景射线
       * @param offsetX 鼠标偏移X轴
       * @param offsetY 鼠标偏移Y轴
       * @param applySectionBox 是否应用剖切框结果到射线(将影响射线能否点选到以及被剖切隐藏掉的构件)
       * @returns 射线实例
       */
      getRaycaster(offsetX: number, offsetY: number, applySectionBox?: boolean): THREE.Raycaster;
      /**
       * 执行射线与模型的相交计算
       * @param raycaster 射线
       * @returns 射线与模型相交计算返回结果
       */
      intersectsMesh(raycaster: THREE.Raycaster, offset: any): Intersection;
      /**
       * 通知锁定引擎的鼠标选择构件功能
       */
      lockSelect(lockName: string): void;
      /**
       * 通知解锁引擎的鼠标选择构件功能
       */
      unlockSelect(lockName: string): void;
      /**
       * 通知锁定引擎的鼠标互交功能，只要有任何一个lockName没解锁，引擎都不会执行鼠标交互。
       */
      lockCamera(lockName: string): void;
      /**
       * 通知解锁引擎的鼠标互交功能，只要有任何一个lockName没解锁，引擎都不会执行鼠标交互。
       */
      unlockCamera(lockName: string): void;
      /**
       * 显示剖切盒控制器
       */
      showSectionBox(cb: any): void;
      /**
       * 显示轴向剖切盒
       */
      showAxialSectionBox(): void;
      /**
       * 关闭轴向剖切盒
       */
      closeAxialSectionBox(): void;
      /**
       * 关闭剖切控制器
       * @param keepSectionPlanes 是否保持剖切结果
       */
      closeSectionBox(keepSectionPlanes?: boolean): void;
      /**
       * 重置剖切框位置与大小到模型的包围框盒
       */
      resetSectionBox(): void;
      /**
       * 获取剖切框参数
       * @returns 剖切框参数
       */
      getSectionData(): SectionData;
      /**
       * 设置剖切框参数
       * @param sectionData 剖切框参数
       */
      setSectionData(sectionData: SectionData): any;
      /**
       * 设置鼠标点选模式
       * @param selectMode 点选模式
       */
      setSelectMode(selectMode: SelectMode): void;
      /**
       * 获取当前点选模式信息
       */
      getSelectMode(): SelectMode;
      /**
       * 获取剖切盒子参数
       */
      getSectionBoxData(): any;
      /**
       * 获取场景的外包围盒
       * @returns 包围盒
       */
      getBoundingBox(): BoundingBox;
      /**
       * 重新计算外包围盒(一般用不到)
       * @param updateMeshBoundingBox 是否重新计算Mesh的点集数据
       */
      updateBoundBox(updateMeshBoundingBox: boolean): void;
      /**
       * 获取场景内加载的所有节点实例
       * @returns 节点列表
       */
      getNodes(): Node[];
      /**
       * 将指定的节点列表移除出场景
       * @param ids 节点Id
       * @param updateBoundBox 是否重新计算外包围盒
       */
      removeNodes(ids: string[], updateBoundBox?: boolean): void;
      /**
       * 将指定的节点应用矩阵位置转换
       * @param ids
       * @param matrix
       * @returns
       */
      nodesApplyMatrix(ids: string[], matrix: THREE.Matrix4): void;
      /**
       * 移除所有的构件 清空场景
       */
      clearScene(): void;
      /**
       * 获取节点列表的外包围盒
       * @param ids 节点Id
       * @returns 包围盒实例
       */
      getNodesBoundingBox(ids: string[]): BoundingBox;
      /**
       * 获取场景的外包围盒
       * @returns 包围盒实例
       */
      getSceneBoundingBox(): BoundingBox;
      /**
       * 获取当前的相机信息
       */
      getCameraData(): CameraData;
      private _savedCameraValue;
      /**
       * 将当前的相机状态设置到场景
       * @param cameraData 相机状态
       */
      setCameraData(cameraData: CameraData, playAnimationTime?: number): void;
      /**
       * 切换当前相机操作模式
       * @param type 操作模式
       */
      switchControlsType(type: CameraControlsType): void;
      /**
       * 切换当前相机类型
       * @param type 相机类型
       */
      switchCameraType(type: CameraType): void;
      /**
       * 获取相机切换需要的数据
       * @param camera 当前相机
       * @returns
       */
      getCameraSwitchData(camera: THREE.PerspectiveCamera | THREE.OrthographicCamera, cameraData?: CameraData): THREE.Vector3 | {
          width: number;
          height: number;
      };
      /**
       * 获取正交相机位置偏移
       * @param camera 正交相机
       * @returns
       */
      getOrthographicCameraOffset(camera: THREE.OrthographicCamera): any;
      /**
       * 设置相机进入漫游模式的移动速度
       * @param number 速度值
       * @param type 加速/减速状态
       */
      setSpeed(number: number): void;
      /**
       * 漫游模式模拟按键
       */
      analogKey(code: any, type: any): void;
      /**
       * 设置相机漫游时的移动速度
       * @param value 移动速度 (为空则只刷新速度,用于模型加载后场景大小变化后)
       */
      setCameraNavigationSpeed(value?: number): void;
      /**
       * 设置相机漫游时的滚轮的移动速度
       * @param value 移动速度 (为空则只刷新速度,用于模型加载后场景大小变化后)
       */
      setCameraZoomSpeed(value?: number): void;
      /**
       * 创建漫游关键帧
       * @param time 漫游帧到下一帧所需的时间 [默认值:2秒]
       * @returns 漫游关键帧数据
       */
      createWalkthroughKeyFrame(time?: number): WalkthroughKeyFrame;
      /**
       * 修改按钮状态
       */
      updateMouseButton(type: number): void;
      /**
       * 播放漫游动画
       */
      playWalkthroughAnimation(frames: WalkthroughKeyFrame[], option?: WalkthroughOption): Promise<void>;
      /**
       * 播放相机移动动画，如果只传入一帧则从当前位置作为初始帧
       * @param times 关键帧列表
       * @param positions 关键帧位置列表
       * @param quaternions 关键帧旋转四元数列表
       * @returns 异步Promise
       */
      playCameraAnimation(times: number[], positions: IVector3[] | THREE.Vector3[], quaternions: THREE.Vector4[] | THREE.Quaternion[] | IVector4[], lrbt: THREE.Vector4[] | IVector4[]): Promise<void>;
      /**
       * 停止所有的相机动画的播放
       * @param roolback 是否返回到播放前的位置
       */
      stopCameraAnimation(roolback?: boolean): void;
      /**
       * 设置相机动画的播放速度
       */
      setCameraAnimationTimeScale(timeScale: number): void;
      /**
       * 设置当前相机视角
       * @param viewDirection 相机视角类型
       */
      setViewDirection(viewDirection: ViewDirection, playAnimation?: boolean): void;
      /**
       * 获取高亮材质
       */
      getHighlightMaterial(): THREE.Material;
      /**
       * 获取着色材质
       */
      getColorMaterial(): THREE.Material;
      /**
       * 获取线框材质
       */
      getLineMaterial(): THREE.Material;
      /**
       * 获取线框高亮材质
       */
      getLineHighlightMaterial(): THREE.Material;
      /**
       * 获取线框着色材质
       */
      getLineColorMaterial(): THREE.Material;
      /**
       * 设置高亮材质
       */
      setHighlightMaterial(highlightMaterial: THREE.Material): void;
      /**
       * 设置着色材质
       */
      setColorMaterial(colorMaterial: THREE.Material): void;
      /**
       * 设置线框材质
       */
      setLineMaterial(lineMaterial: THREE.Material): void;
      /**
       * 设置线框高亮材质
       */
      setLineHighlightMaterial(lineHighlightMaterial: THREE.Material): void;
      /**
       * 设置线框着色材质
       */
      setLineColorMaterial(lineColorMaterial: THREE.Material): void;
      /**
       * 设置半透明状态的透明度
       */
      setTranslucence(translucence: number): void;
      /**
       * 设置全局线框是否显示
       * @param isHide 是否显示
       */
      setLineIsHide(isHide: boolean): void;
      /**
       * 获取高亮列表 [!只读!]
       */
      getNodeHighlightSet(): ReadonlySet<string>;
      /**
       * 获取高亮列表 [!只读!]
       */
      getNodeHighlightList(): Array<string>;
      /**
       * 获取隐藏列表 [!只读!]
       */
      getNodeHideSet(): ReadonlySet<string>;
      /** 获取隐藏列表 [!只读!] list集合 */
      getNodeHideList(): Array<string>;
      /**
       * 取消所有构件的高亮
       */
      clearAllNodesHighlight(): void;
      /**
       * 取消所有构件的隐藏
       */
      clearAllNodesHide(): void;
      /**
       * 设置指定节点列表高亮
       * @param ids 节点列表
       * @param isHighlight 是否高亮
       */
      setNodesHighlight(ids: string[], isHighlight: boolean): void;
      getBoundingSphere(): THREE.Sphere;
      /**
       * 切换指定节点列表的高亮
       * @param ids 节点列表
       */
      switchNodesHighlight(ids: string[]): void;
      /**
       * 设置指定节点列表显隐
       * @param ids 节点列表
       * @param isVisible 是否显示
       */
      setNodesVisible(ids: string[], isVisible: boolean): void;
      /** 设置节点构件的透明度 */
      SetNodesTransparency(ids: string[], opacity: number): void;
      /**
       * 开启节点构建强调
       * @param ids 构建集合
       * @param enable 是否开启, 默认是开启
       */
      SetNodesBlink(ids: string[] | string, color: number | string, speed?: number, enable?: boolean): void;
      /**
       * 同时设置节点颜色和透明度
       * @param ids
       * @param color
       * @param opacity
       */
      SetNodesColorAndOpacity(ids: string[], color: string | number, opacity?: number, closeDepthTest?: boolean): void;
      /** 设置节点构件材质 */
      SetNodesMaterial(ids: string[], material: THREE.Material, closeDepthTest?: boolean): void;
      /**
       * 获取模型参数
       * @param ids
       */
      ExtractModel(id: string): any;
      /**
       * 设置指定节点列表的状态值
       * @param ids 节点列表
       * @param state 状态值 [隐藏:-1] [高亮:0] [材质:1] [半透明:2] [着色:3]
       */
      setNodesState(ids: string[], state: number, logicDisplay?: boolean): void;
      /**
       * 设置其他节点隐藏, 选中的节点设置为正常
       * 对于设置其他多数节点状态，一般来说，设置显隐就好。因为此方法大多数会和显示全部搭配
       * @param ids
       */
      setOtherNodesHide(ids: string[]): void;
      /**
       * 设置所有节点列表的状态值
       * @param ids 节点列表
       * @param state 状态值 [隐藏:-1] [高亮:0] [材质:1] [半透明:2] [着色:3]
       */
      setAllNodesState(state: number, logicDisplay?: boolean): void;
      /**
       * 设置指定节点列表的白模线框颜色(需要配合节点状态值是3)
       * @param ids 节点列表
       * @param hexColor 颜色 例: '#DDFF77'
       */
      setNodesClayColor(ids: string[], hexColor: string): void;
      /**
       * 获取重置剖切框位置与大小到模型的包围框盒
       */
      getSectionBox(): SectionData;
      /**
       * 设置所有节点列表的白模颜色(需要配合节点状态值是3)
       * @param hexColor 颜色 例: '#DDFF77'
       */
      setAllNodesClayColor(hexColor: string): void;
      /**
       * 设置指定节点列表的白模线框颜色(需要配合节点状态值是3)
       * @param ids 节点列表
       * @param hexColor 颜色 例: '#DDFF77'
       */
      setNodesLineClayColor(ids: string[], hexColor: string): void;
      /**
       * 设置所有节点列表的白模线框颜色(需要配合节点状态值是3)
       * @param hexColor 颜色 例: '#DDFF77'
       */
      setAllNodesLineClayColor(hexColor: string): void;
      /**
       * 设置场景背景颜色
       * @param color 颜色
       */
      setSceneBackgroundColor(color: string): void;
      /**
       * 重置场景背景色
       */
      resetBackground(): void;
      /**
       * 设置天空盒
       */
      setDefaultSkyBox(urls: string[]): void;
      /**
       * 异步点选模型上的一个点，并返回点选信息
       * 如果返回null则代表取消了点选
       */
      pickPoint(): Promise<Intersection>;
      /**
       * 取消当前的点选等待直接返回
       */
      cancelPickPoint(): void;
      /**
       * 将三维模型内的点投影到HtmlCanvas坐标
       * @param point 要投影的三维场景坐标
       * @returns HtmlCanvas坐标
       */
      unprojectPoint(point: THREE.Vector3): THREE.Vector3;
      /**
       * 执行测量 (在执行过程中可以点击鼠标右键终止测量)
       */
      startMeasure(cd: any): void;
      measureMouseStyle(): void;
      keepUpdateMeasureSvg(): void;
      /**
       * 终止测量
       */
      stopMeasure(): void;
      /**
       * 构件集合最大化
       * @param ids 构件集合
       * @param ratio 缩放比率，[0.0 - 1.0]，标准0.5
       * @returns
       */
      fitElements(ids: string[], ratio?: number): void;
      /**
       * 包围盒当前视角最大化显示
       * @param box 包围盒
       * @param camera 相机
       * @param ratio 缩放比率，[0.0 - 1.0]，标准0.5
       * @param speed 缩放速度，默认1.5, 越小越快
       */
      fitBox(box: THREE.Box3, camera: THREE.PerspectiveCamera | THREE.OrthographicCamera, ratio?: number, speed?: number): void;
      /**
       * 获取包围盒中心点
       * @param ids
       */
      getScreenPoint(ids: string[]): THREE.Vector3;
      /**
       * 显示/隐藏六面体导航
       * @param type 是否显示六面体
       */
      setDisplayType(type: any): void;
      /**
       * 获取包围盒中心点画点
       */
      centerPoint(): void;
      /**
       * 显示中心点
       */
      showOrHiddenCenterPoint(isEnable: boolean): void;
      removeLine(obj: any): void;
      drawLine(pt1: THREE.Vector3, pt2: THREE.Vector3, color: THREE.Color): THREE.Group;
      drawLine2(pt2: THREE.Vector3, color: THREE.Color): THREE.Group;
      drawBoundingBox(): void;
      drawBoundingBox2(id: string): void;
      /**
       * 二维点转三维点
       * @param x 轴位置
       * @param y 轴位置
       * @returns
       */
      project(x: number, y: number, z?: number): THREE.Vector3;
      drawP(): void;
      link(): void;
      /**
       * 与射线相交的信息
       * @param ray
       * @param radiusForLine
       * @returns
       */
      IntersectWithRay(ray: THREE.Ray, radiusForLine?: number): Intersection;
      BombNodeMesh(id: string): void;
      BombNodes(bombType: BombType, args: BombArgs): BomberBase;
      ForeceRefresh(): void;
  }

}
declare module 'bimwin-api/bimwin/camera/base' {
  import { BIMWinCamera, CameraControlsType } from "bimwin-api/bimwin/types";
  export interface Controls {
      /**
       * 获取相机类型
       */
      type(): CameraControlsType;
      /**
       * 设置是否启用控制器
       * @param isEnable 是否启用
       */
      setEnable(isEnable: boolean): any;
      /**
       * 更新控制的相机
       * @param camera 相机实例
       */
      updateCamera(camera: BIMWinCamera): any;
      /**
       * 注销
       */
      dispose(): any;
  }

}
declare module 'bimwin-api/bimwin/camera/editorControls' {
  import * as THREE from 'three';
  import { BIMWin3D } from "bimwin-api/bimwin/bimwin3d";
  import { BIMWinCamera, CameraControlsType } from "bimwin-api/bimwin/types";
  import { Controls } from "bimwin-api/bimwin/camera/base";
  export class EditorControls implements Controls {
      private camera;
      private events;
      /**
       * 控制器是否启动
       */
      isEnable: boolean;
      /**
       * 在平移时的相机移动速率 [默认值:1]
       */
      moveSpeed: number;
      /**
       * 在旋转时相机的移动速率 [默认值:1.5]
       */
      rotationSpeed: number;
      /**
       * 在缩放时相机的移动速率 [默认值:1]
       */
      zoomSpeed: number;
      /**
       * 鼠标右键平移时的移动速率 [默认值:1]
       */
      translationSpeed: number;
      centerPointerShow: boolean;
      private preWheelPosition;
      private preWheelIntersection;
      frustum: THREE.Frustum;
      constructor(bimwin: BIMWin3D);
      type(): CameraControlsType;
      get target(): THREE.Vector3;
      setEnable(isEnable: boolean): void;
      setCenterPointEnable(enable: boolean): void;
      updateCamera(camera: BIMWinCamera): void;
      private inFrustum;
      /**
       * 获取距离鼠标最近的点
       */
      private getThePointClosestToTheMouse;
      dispose(): void;
  }

}
declare module 'bimwin-api/bimwin/camera/editorControls2D' {
  import * as THREE from 'three';
  import { BIMWin2D } from 'bimwin-api/bimwin/bimwin2d';
  import { BoundingBox } from 'bimwin-api/bimwin/core/boundingBox';
  import { CameraControlsType } from "bimwin-api/bimwin/types";
  import { Controls } from "bimwin-api/bimwin/camera/base";
  export class EditorControls2D implements Controls {
      private camera;
      private events;
      private _centreX;
      private _centreY;
      private _width;
      private _height;
      private cameraWidth;
      private cameraHeight;
      /**
       * 在缩放时相机的移动速率 [默认值:0.15]
       */
      zoomSpeed: number;
      private bimwin;
      /**
       * 控制器是否启动
       */
      isEnable: boolean;
      constructor(bimwin?: BIMWin2D);
      type(): CameraControlsType;
      get target(): THREE.Vector3;
      setEnable(isEnable: boolean): void;
      updateCamera(camera: THREE.OrthographicCamera): void;
      /** 执行缩放指令
       * @param viewPortX 在画板上的指针缩放焦点X 方向为从左往右(单位:像素px)
       * @param viewPortY 在画板上的指针缩放焦点Y 方向为从上往下
       * @param scale 缩放比例 原比例为0 放大则例如0.2 缩小例如-0.2这样 自由填写
       */
      wheel(viewPortX: number, viewPortY: number, scale: number): void;
      private _tweenAnimation;
      /** 移动视口到指定位置
       * @param centreX 视口中心点X坐标
       * @param centreY 视口中心点Y坐标
       * @param width 视口宽度
       * @param height 视口高度
       */
      moveTo(centreX?: number, centreY?: number, width?: number, height?: number, animation?: boolean): void;
      /** 移动视口到指定范围框
       * @param maxx 范围右上角X
       * @param maxy 范围右上角Y
       * @param minx 范围左下角X
       * @param miny 范围左下角Y
       */
      moveToBoundingBox(box: BoundingBox, animation?: boolean): void;
      /**设置画板分辨率 */
      setCanvasSize(viewPortWidth: number, viewPortHeight: number): void;
      /**重计算更新视口 */
      private updateViewPort;
      /**切换bimwin对象 */
      changeBimwin(obj: any): void;
      dispose(): void;
  }

}
declare module 'bimwin-api/bimwin/camera/navigationControls' {
  import * as THREE from 'three';
  import { BIMWin3D } from "bimwin-api/bimwin/bimwin3d";
  import { Octree } from 'bimwin-api/bimwin/component/Octree';
  import { BIMWinCamera, CameraControlsType } from "bimwin-api/bimwin/types";
  import { Controls } from "bimwin-api/bimwin/camera/base";
  import { ThirdPersonControls } from 'bimwin-api/bimwin/camera/ThirdPersonControls';
  /** 漫游类型 */
  export enum NavigationMode {
      Navigation_FPS = 0,
      Navigation_TPS = 1
  }
  export class NavigationControls implements Controls {
      private camera;
      private events;
      private bimwin;
      /**
       * 控制器是否启动
       */
      isEnable: boolean;
      /**
       * 在平移时的相机移动速率 [默认值:10]
       */
      private _moveSpeed;
      /**
       * 在旋转时相机的移动速率 [默认值:1.5]
       */
      rotationSpeed: number;
      /**
       * 人物模型
       *
       */
      private manModel;
      /**
       * 漫游类型
       */
      private _navMode;
      private roobotControl;
      _gravityEnabled: boolean;
      _collisionEnabled: boolean;
      unitSize: number | undefined;
      octree: Octree;
      weightlessnessCount: number;
      onFloor: boolean;
      initPosition: THREE.Vector3;
      boxCenter: THREE.Vector3;
      private debug;
      cameraCopy: THREE.PerspectiveCamera | THREE.OrthographicCamera;
      action: THREE.AnimationAction;
      thirdPerson: ThirdPersonControls;
      previousFrameBox: THREE.Box3;
      fallOutOfTheMapBorder: boolean;
      nextRender: boolean;
      timer: number;
      constructor(bimwin: BIMWin3D);
      get gravityEnabled(): boolean;
      set gravityEnabled(val: boolean);
      get collisionEnabled(): boolean;
      set collisionEnabled(val: boolean);
      get moveSpeed(): number;
      set moveSpeed(val: number);
      get navMode(): NavigationMode;
      set navMode(val: NavigationMode);
      /**
       * 计算高度差
       */
      computedMaxHeight(box: THREE.Box3, triangles: THREE.Triangle[]): THREE.Vector3;
      updateBoxPosition(position: THREE.Vector3): THREE.Box3;
      /**
       * 对相机创建Box3
       */
      getUnitSize(): void;
      private _timeId;
      _elevation: THREE.Vector3;
      _upVec: THREE.Vector3;
      /** 调整坐标总是水平 */
      tuneDir(normal: THREE.Vector3): void;
      type(): CameraControlsType;
      /**
       * 移动端模拟按键操作
       * @param code 按键名称
       */
      analogKey(code: any, type: any): void;
      setEnable(isEnable: boolean): void;
      updateCamera(camera: BIMWinCamera): void;
      dispose(): void;
  }

}
declare module 'bimwin-api/bimwin/camera/ThirdPersonControls' {
  import * as THREE from "three";
  import { Octree } from 'bimwin-api/bimwin/component/Octree';
  import { BIMWin3D } from "bimwin-api/bimwin/bimwin3d";
  /**
   * 第三人称视角控制器
   */
  class ThirdPersonControls extends THREE.EventDispatcher {
      /**
       * 人物url
       */
      personUrl: string;
      model: THREE.Group;
      octree: Octree;
      camera: THREE.PerspectiveCamera;
      scene: THREE.Scene;
      renderer: THREE.WebGLRenderer;
      mixer: THREE.AnimationMixer;
      actions: Map<string, THREE.AnimationAction>;
      /**
       * 站立时的动作
       */
      standing: string;
      /**
       * 行走时的动作
       */
      walking: string;
      mousedown: boolean;
      mouseDownX: number;
      mouseDownY: number;
      cameraPosition: THREE.Vector3;
      cameraRotation: THREE.Euler;
      /**
       * 是否开启debug视图
       */
      debug: boolean;
      modelBox: THREE.Box3;
      /**
       * 重力效果
       */
      private _gravityEnabled;
      /**
       * 碰撞效果
       */
      private _collisionEnabled;
      forward: boolean;
      back: boolean;
      left: boolean;
      right: boolean;
      up: boolean;
      down: boolean;
      onFloor: boolean;
      /**
       * 用于重力加速度
       */
      weightlessnessCount: number;
      clock: THREE.Clock;
      /**
       * 速度相关
       */
      speed: number;
      bimwin: BIMWin3D;
      isWalking: boolean;
      lastFrame: number;
      /**
       * 可以指定速度
       */
      weightlessnessVelocity: number;
      constructor(camera: THREE.PerspectiveCamera, scene: THREE.Scene, renderer: THREE.WebGLRenderer, bimwin: BIMWin3D);
      /**
       * get set
       */
      get gravityEnabled(): any;
      set gravityEnabled(val: any);
      get collisionEnabled(): any;
      set collisionEnabled(val: any);
      /**
       * 加载人物
       */
      loadPerson(url: string): Promise<THREE.Group>;
      /**
       * 创建动作
       */
      private createActions;
      /**
       * 初始化事件
       */
      private initializeEvents;
      private update;
      /**
       * 更新相机位置
       */
      private updateCamera;
      /**
       * 更新动画
       */
      private updateActionAnimation;
      private handleKeyUp;
      private handleKeyDown;
      private handleMouseDown;
      private handleMouseUp;
      private handleMouseMove;
      /**
       * 摧毁时调用
       */
      dispose(): void;
      /**
       * 开始人物控制
       */
      start(initPosition: THREE.Vector3): void;
      private modelStraighten;
      /**
       * 处理模型使之是正常模型
       */
      private handleModel;
      /**
       * 为模型制作box
       */
      private createModelBox;
      /**
       * 从start开始沿着dir方向走dic距离
       */
      private walkAlongTheDirection;
  }
  export { ThirdPersonControls };

}
declare module 'bimwin-api/bimwin/component/bomb' {
  /*********************
   ** 文件说明 爆炸效果
   ** 创建时间 20220421
   ** 创建人   樊永炼
  **********************/
  import * as THREE from "three";
  import { BIMWin3D } from "bimwin-api/bimwin/bimwin3d";
  export enum BombType {
      Spherical = 0,
      Cubic = 1,
      Arranged = 2,
      FloorByElevation = 3,
      FloorByGroup = 4,
      Schedule = 5,
      ScheduleGroup = 6
  }
  /** 轴类型 */
  export enum AxisType {
      X = 0,
      Y = 1,
      Z = 2
  }
  export interface ScheduleArg {
      StartSecond?: number;
      EndSecond?: number;
      Axis?: AxisType;
      Inverse?: boolean;
  }
  /** 炸开时参数 */
  export interface BombArgs {
      Groups: string[] | string[][] | any;
      MilliSecond: number;
      Continuous: boolean;
      Segments: number;
      SplitAxis: AxisType;
      Bomb: boolean;
      Explosive: number;
      Gap: number;
      Cubic_Bomb: boolean;
      ArrangeAxis: AxisType;
      Floor_Elevations: number[];
      Schedule?: ScheduleArg | ScheduleArg[];
      AutoStart: boolean;
  }
  export class BomberBase {
      bimwin: BIMWin3D;
      Type: BombType;
      tween: any;
      protected _bombGroup: THREE.Group;
      constructor(bw: BIMWin3D);
      Explode(v: BombArgs): void;
      Update(vary: any): void;
      Dispose(): void;
      protected Tween(from: {}, to: {}, sec?: number, continuous?: boolean, autostart?: boolean): void;
      Stop(): void;
      Start(): void;
  }
  export class SphericalBomber extends BomberBase {
      constructor(bw: BIMWin3D);
      private objs;
      private nodeIds;
      Explode(v: BombArgs): void;
      Update(vary: any): void;
      Dispose(): void;
  }
  export class CubicBomber extends BomberBase {
      constructor(bw: BIMWin3D);
      private objs;
      private nodeIds;
      Explode(v: BombArgs): void;
      Update(vary: any): void;
      Dispose(): void;
  }
  export class ArrangedBomber extends BomberBase {
      constructor(bw: BIMWin3D);
      private objs;
      private nodeIds;
      Explode(v: BombArgs): void;
      Update(vary: any): void;
      Dispose(): void;
  }
  export class FloorByElevationBomber extends BomberBase {
      constructor(bw: BIMWin3D);
      private objs;
      private nodeIds;
      Explode(v: BombArgs): void;
      Update(vary: any): void;
      Dispose(): void;
  }
  export class FloorByGroupsBomber extends BomberBase {
      constructor(bw: BIMWin3D);
      private objs;
      private nodeIds;
      Explode(v: BombArgs): void;
      Update(vary: any): void;
      Dispose(): void;
  }
  export class ScheduleBomber extends BomberBase {
      constructor(bw: BIMWin3D);
      private objs;
      private mats;
      private rangeStart;
      private rangeEnd;
      private nodeIds;
      private CalcRange;
      Explode(v: BombArgs): void;
      Update(vary: any): void;
      Dispose(): void;
  }
  export class ScheduleGroupBomber extends BomberBase {
      constructor(bw: BIMWin3D);
      private bombers;
      Explode(v: BombArgs): void;
      Dispose(): void;
  }

}
declare module 'bimwin-api/bimwin/component/componentBase' {
  /**
   * 控件基类 必须提供显示与关闭两个接口
   */
  export interface ComponentBase {
      /**
       * 显示控件
       */
      show(): any;
      /**
       * 关闭控件
       */
      close(): any;
  }

}
declare module 'bimwin-api/bimwin/component/hoverNode' {
  import { BIMWin2D } from 'bimwin-api/bimwin/bimwin2d';
  import { Node } from 'bimwin-api/bimwin/core/staticMeshBlock';
  import { IColor } from 'bimwin-api/bimwin/types';
  export class HoverNode {
      private bimwin;
      private lineMesh;
      private mesh;
      private segme;
      node: Node[];
      private lineGeometry;
      private lineMaterial;
      private bufferGeometry;
      private meshMaterial;
      private _isShow;
      private lineColor;
      private meshColor;
      constructor(bimwin: BIMWin2D);
      get isShow(): boolean;
      show(): void;
      close(): void;
      setNode(node: Node | Node[]): void;
      setColor(color: IColor): this;
      setMeshColor(color: number): this;
      lineWidth: number;
      update(): void;
  }

}
declare module 'bimwin-api/bimwin/component/htmlBindHandle' {
  import * as THREE from 'three';
  import { BIMWin2D } from 'bimwin-api/bimwin/bimwin2d';
  import { BIMWin3D } from "bimwin-api/bimwin/bimwin3d";
  export class HtmlBindHandle {
      private bimwin;
      private event;
      point: THREE.Vector3;
      unprojectPoint: THREE.Vector3;
      element: HTMLElement;
      serialNumber: Number;
      offset: {
          x: number;
          y: number;
      };
      isContains: boolean;
      isVisible: boolean;
      /** 是否可用 */
      enable: boolean;
      onClick: any;
      constructor(bimwin: BIMWin3D | BIMWin2D, point: THREE.Vector3, element: HTMLElement | any, serialNumber: Number);
      update(): void;
      dispose(): void;
  }

}
declare module 'bimwin-api/bimwin/component/image3d' {
  import * as THREE from 'three';
  import { BIMWin2D } from "bimwin-api/bimwin/bimwin2d";
  import { BIMWin3D } from "bimwin-api/bimwin/bimwin3d";
  export class Image3D {
      img: THREE.Mesh;
      static Create2D(bimwin: BIMWin2D | BIMWin3D, url: string, x: number, y: number, width: number, height: number): Image3D;
      constructor(bimwin: BIMWin2D | BIMWin3D, url: string, position: THREE.Vector3, scale: THREE.Vector3, rotation: THREE.Euler);
      loadImage(url: string): Promise<void>;
      dispose(): void;
  }

}
declare module 'bimwin-api/bimwin/component/map2d' {
  export class Map2D {
      private bimwinName;
      private get bimwin();
      private hostDiv;
      private canvas;
      private renderer;
      private camera;
      private cameraControls;
      private viewPortLine;
      constructor(hostDiv: HTMLDivElement | string, _bimwinName: string);
      update(): void;
      dispose(): void;
  }

}
declare module 'bimwin-api/bimwin/component/map3d' {
  import { BIMWin3D } from "bimwin-api/bimwin/bimwin3d";
  import { SceneLoadOption2D } from 'bimwin-api/bimwin/types';
  export class Map3D {
      private bimwin;
      private map;
      private svg;
      private updateEvent;
      private clickMove;
      constructor(hostDiv: HTMLDivElement | string, bimwin: BIMWin3D);
      /**
       * 设置是否启用点选地图位置移动视口
       * @param isEnable 是否启用
       */
      setEnableClickMove(isEnable: boolean): void;
      /**
       * 通过Url地址加载模型
       * @param root 模型根目录
       * @param fileName 模型索引文件名
       */
      loadBWSceneFormUrl(root: string, fileName: string, option?: SceneLoadOption2D): Promise<void>;
      /**
       * 清空场景
       */
      clear(): void;
      dispose(): void;
  }

}
declare module 'bimwin-api/bimwin/component/measure2dTool' {
  import * as THREE from "three";
  import { BIMWin2D } from "bimwin-api/bimwin/bimwin2d";
  import { Intersection } from "bimwin-api/bimwin/core/intersect";
  import { ComponentBase } from "bimwin-api/bimwin/component/componentBase";
  /**测量工具 */
  export class Measure2DTool implements ComponentBase {
      private bimwin;
      private isMeasure;
      private events;
      private assistantSvg;
      private points;
      private points2;
      private angles;
      private angles2;
      private theMeasureOfAreas;
      private theMeasureOfAreas2;
      private theMeasureOfAreaList;
      private girthes;
      private girth;
      private type;
      private spot;
      private isBreak;
      private lengthSize;
      private company;
      private sizeData;
      private angleArr;
      private angle;
      private angleList;
      private isCancel;
      private chosenIndex;
      /** 传送测绘数据 */
      private measureToolevent;
      private measureTypeEvent;
      /** 测量Svg监听 */
      private onSvgClick;
      /** SVG */
      private measureSVGManager;
      constructor(bimwin: BIMWin2D);
      updateSvg(cb?: MouseEvent): void;
      /**
      * 处理实时画线的数据
      * @param value 测量值
      * @param pss 实时点集
      * @param type 测量类型
      * @returns 处理完的数据
      */
      updateRealTimeData(value: any, pss: any, type: any): {
          textName: string;
          type: any;
          x: number;
          y: number;
          value: any;
          company: string;
          polyline: string;
          points: any[];
          assistant: any[];
      };
      drawFirstAngleLine(points: any): {
          polyline: string;
      };
      /** 计算面积 */
      private getTheMeasureOfArea;
      /** 计算夹角 */
      private getAngle;
      /**计算周长 */
      getGirth(points: THREE.Vector3[]): number;
      /** svg */
      paintingSvg(html: any): string;
      /** 画出线条 */
      paintingLine(points: any, color: any): string;
      /** 画出端点 */
      paintingEndpoint(obj: any, color: any): string;
      /**发送测绘数据*/
      dispacthdata(length?: any): void;
      /**删除数据 */
      deleteData(index: number): void;
      /**点击面板数据显示边框 */
      lightRect(index: any): void;
      /**开始执行测量 */
      show(cd: any): Promise<void>;
      /** 处理被SVG接收的数据
      * @param index 索引
      * @param type 测量类型
      */
      dealData(type: any, index?: any): {
          textName: any;
          type: any;
          x: number;
          y: number;
          value: number;
          company: string;
          polyline: string;
          points: any[];
      };
      /**
       * 处理更新数据
       * @param points 点集
       * @param type 测量类型
       * @returns 返回更新数据
       */
      updateData(index: any, points: any, type: any): {
          x: any;
          y: any;
          type: any;
          polyline: string;
          value: any;
          company: string;
          choseIndex: number;
          currentType: string;
      };
      /** 切换绘制状态 */
      changeType(type: any): void;
      /**切换bimwin对象 */
      changeBimwin(obj: any): void;
      /**取消画线 */
      cancel(): void;
      /**结束测量但不关闭 */
      close(): void;
      /**清理测量的线段,关闭测量方法 */
      clear(): void;
      /**清理测量的线段 */
      clearAll(): void;
      /**切换线段单位 */
      changeCompany(company: any): void;
      private conversionUnit;
      /**删除svg标签 */
      /** 捕捉时的模型存在的容器 */
      private _snapShape;
      /** 捕捉时显示的面 */
      private _keyPoint;
      private _keyPoint1;
      private _keyPoint2;
      /** 捕捉时显示的点(球) */
      private _onPoint;
      /** 捕捉图形的颜色 */
      SnapShapeColor: number;
      /** 线条粗细 */
      private SnapLineSize;
      private width;
      /** 初始化捕捉图形 */
      private InitSnapShape;
      /**
       *
       * @param intersection 选中元素
       * @param display true：绘制捕捉点，false：不绘制捕捉点
       * @returns
       */
      UpdateSnapPoint(intersection: Intersection, display?: boolean): THREE.Vector3 | [THREE.Vector3] | undefined;
      /**
       * 捕捉关键点
       * @param faceIndex
       * @param hitPoint
       * @param faces
       * @param points
       * @returns
       */
      private SnapLineOrCrossPoint;
      /** 显示捕捉图形开关 */
      private _display;
      DisplaySnapShape(display: boolean): void;
      adjustCompany(length: any, n: number): any;
  }

}
declare module 'bimwin-api/bimwin/component/measureSvg' {
  import { BIMWin2D } from "bimwin-api/bimwin/bimwin2d";
  import { BIMWin3D } from "bimwin-api/bimwin/bimwin3d";
  import { UniqueId } from "bimwin-api/bimwin/tool/common";
  class Svg {
      type: string;
      id: UniqueId;
      colorHex: string;
      colorRGBA: string;
      svg: SVGElement;
      textTmp: SVGElement;
      polyline: SVGElement;
      title: SVGElement;
      rectAll: SVGElement;
      textAll: SVGElement;
      rect: SVGElement;
      text: SVGElement;
      circle: SVGElement[];
      constructor(data: any, isRealTime?: any);
      init(): void;
      update(data: any): void;
      createCirclePoint(obj: any): SVGCircleElement;
      updateCircle(j: any, data: any): void;
      updateXY(data: any): void;
      isShow(flag: any): void;
      isShowText(flag: any): void;
      updateValue(data: any): void;
      dispose(): void;
  }
  /**
   * 测量SVG类，对应测量类型
   */
  class MeasureSvg {
      svg: SVGElement;
      bimwin: BIMWin2D | BIMWin3D;
      list: Svg[];
      assistantSvg: SVGElement;
      type: string;
      hasAssistant: boolean;
      realTimeSvg: Svg;
      constructor(bimwin: any, type: any);
      /**
       * 初始化
       */
      init(): void;
      /**
       * 渲染进dom中
       */
      render(): void;
      /**
       * 初始化实时画线的SVG
       */
      initRealTimeSvg(): void;
      /**
       * 添加SVG元素
       * @param data 添加的元素所需数据
       */
      addSvgElement(data: any): void;
      /**
       * 添加监听
       * @param data 监听相关数据
       */
      addListener(data: any): void;
      /**
       * 删除SVG元素
       * @param index 删除元素索引
       */
      delete(index: any): void;
      /**
       * 是否显示端点
       * @param i 第几条数据
       * @param j 哪个端点
       * @param isShow 显示否
       */
      isShowCircle(i: any, j: any, isShow: any): void;
      /**
       * 更新端点
       * @param i 第几条数据
       * @param j 哪个端点
       * @param data 更新的数据
       */
      updateCircle(i: any, j: any, data: any): void;
      /**
       * 是否显示文本框SVG
       * @param i 显示text文本框的索引
       * @param flag 是否显示文本框
       */
      isShowText(i: any, flag: any): void;
      /**
       * 更新SVG
       * @param i 更新元素索引
       * @param data 更新的数据
       */
      update(i: any, data: any): void;
      /**
       * 更新辅助线
       * @param data
       */
      updateAssistant(data: any): void;
      /**
       * 删除全部
       */
      dispose(): void;
      /**
       * 删除辅助线
       */
      disposeAssistant(): void;
      /**
       * 初始化辅助线SVG
       */
      initAssistant(): void;
      /**
       * 创建一个辅助线SVG元素
       * @param id id
       * @param color 颜色
       * @returns 返回一个辅助线SVG元素
       */
      createAssistantSvg(id: any, color: any): SVGPolylineElement;
      /**
       * 更新实时SVG
       * @param data 更新数据
       */
      updateRealTimeSvg(data: any, n?: any): void;
      /**
       *
       * @param flag 是否显示实时SVG
       */
      isShowRealTime(flag: any): void;
  }
  /**
   * 测量总SVG，当集合用
   */
  export class SVGManager {
      distanceSvg: MeasureSvg;
      angleSvg: MeasureSvg;
      elevationSvg: MeasureSvg;
      volumeSvg: MeasureSvg;
      areaSvg: MeasureSvg;
      bimwin: BIMWin2D | BIMWin3D;
      constructor(bimwin: BIMWin2D | BIMWin3D);
      render(): void;
      setTitle(str: string): void;
      dispose(): void;
  }
  export {};

}
declare module 'bimwin-api/bimwin/component/measureTool' {
  import * as THREE from 'three';
  import { BIMWin3D } from "bimwin-api/bimwin/bimwin3d";
  import { Intersection } from "bimwin-api/bimwin/core/intersect";
  import { ComponentBase } from "bimwin-api/bimwin/component/componentBase";
  export enum measurementType {
      'DISTANCE' = "distance",
      'ANGLE' = "Angle",
      'ELEVATION' = "elevation",
      'VOLUME' = "volume",
      'MIN_DISTANCE' = "min_distance",
      'TheMeasureOfArea' = "TheMeasureOfArea"
  }
  /** 测量工具 */
  export class MeasureTool implements ComponentBase {
      private bimwin;
      private isMeasure;
      private events;
      private assistantSvg;
      private points;
      private measuringAnglePoints;
      private points2;
      private points3;
      private spot;
      private isBreak;
      private lengthSize;
      private angleSize;
      private elevation;
      private elevationSize;
      private elevationPoints;
      private company;
      private sizeData;
      private type;
      private angleLength;
      private xyzLength;
      private xyz;
      private minS;
      private minMeshes;
      private minLength;
      private volumeS;
      private volumeData;
      private highLightNode;
      /** 传送测绘数据 */
      private measureToolevent;
      /** 选中索引 */
      private chosenIndex;
      /** 测量类型监听 */
      private measureTypeEvent;
      /** 测量SVG */
      private measureSVGManager;
      /** 测量SVG点击事件 */
      private onSvgClick;
      /** 测量开始/结束事件 */
      private onMeasure;
      constructor(bimwin: BIMWin3D);
      getIntersection(raycaster: any, meshes: any): any;
      updateSvg(cb?: MouseEvent): void;
      updateAssistant(index: any): void;
      /** 点击移近
       * @param index 移近index
      */
      clickMove(index: any, type: string): void;
      /**发送测绘数据*/
      dispacthdata(length?: any): void;
      /**删除数据 */
      deleteData(index: number): void;
      /**点击面板数据显示边框 */
      lightRect(index: any): void;
      /**高亮选中体积构件 */
      highLightVolume(index: any): void;
      /**开始执行测量 */
      show(cd?: any): Promise<void>;
      /** 处理被SVG接收的数据
       * @param index 索引
       * @param type 测量类型
       */
      dealData(type: any, index?: any): {
          textName: any;
          type: any;
          x: number;
          y: number;
          value: number;
          company: string;
          polyline: string;
          points: any[];
      };
      /**
       * 处理更新数据
       * @param points 点集
       * @param type 测量类型
       * @returns 返回更新数据
       */
      updateData(index: any, points: any, type: any): {
          x: any;
          y: any;
          type: any;
          polyline: string;
          value: any;
          company: string;
          choseIndex: number;
          currentType: measurementType;
      };
      /**
       * 处理实时画线的数据
       * @param value 测量值
       * @param pss 实时点集
       * @param type 测量类型
       * @returns 处理完的数据
       */
      updateRealTimeData(value: any, pss: any, type: any): {
          textName: string;
          type: any;
          x: number;
          y: number;
          value: any;
          company: string;
          polyline: string;
          points: any[];
          assistant: any[];
      };
      /**取消画线 */
      cancel(): void;
      /**结束测量但不关闭 */
      close(): void;
      /**清理测量的线段,关闭测量方法 */
      clear(): void;
      /**清理测量的线段 */
      clearAll(): void;
      changeType(type: measurementType): void;
      /**切换线段单位 */
      changeCompany(company: any): void;
      /**切换单位 */
      changeCompany2(array: any, n: any, type: any): any[];
      /** svg */
      paintingSvg(html: any): string;
      /** 画出线条 */
      paintingLine(points: any, color: any): string;
      /** 画出端点 */
      paintingEndpoint(obj: any, color: any): string;
      /** 捕捉时的模型存在的容器 */
      private _snapShape;
      /** 捕捉时显示的线 */
      private _line;
      /** 捕捉时显示的面 */
      private _face;
      /** 捕捉时显示的点(球) */
      private _point;
      private circle;
      /** 捕捉图形的颜色 */
      SnapShapeColor: number;
      private SnapPointColor;
      /** 初始化捕捉图形 */
      private InitSnapShape;
      /** 计算夹角 */
      private getAngle;
      /**
       * 更新捕捉点
       * @param intersection 点中位置
       * @param display 显示
       * @returns
       */
      UpdateSnapPoint(intersection: Intersection, display?: boolean): THREE.Vector3 | [THREE.Vector3, THREE.Vector3, THREE.Vector3] | undefined;
      /**
       * 捕捉到线上的点或交叉点
       * @param mesh
       */
      private SnapLineOrCrossPoint;
      /** 显示捕捉图形开关 */
      private _display;
      DisplaySnapShape(display: boolean): void;
      getXYZPolyline(points: any): any[];
      getPolyline(st: any, ed: any): string;
      getLln(stp: THREE.Vector3, edp: THREE.Vector3): THREE.Line3;
      drawFirstAngleLine(points: any): {
          polyline: string;
      };
      /**调整单位 */
      adjustCompany(length: any, n: any): any;
      getXyzLength(st: THREE.Vector3, ed: THREE.Vector3): THREE.Vector3;
      /**计算最短距离 */
      getMinDistance(mesha: any, meshb: any, AB: any, BA: any): {
          minL: number;
          points: any[];
      };
      getMinPoints(points: any, pointsA: any, pointsB: any, triA: any, triB: any, lineA: any, lineB: any): any;
      pointToPoint(pointsA: any, pointsB: any): any[];
      isIntersect(pointsB: any, lineA: any, lineB: any, trib: any): any[];
      /**线线最短 */
      getLinesMin(lineA: any, lineB: any): any[];
      getLinesMinPoints(linea: any, lineb: any): any[];
      /**点面最短 */
      getPointsTriMin(pointsA: any, pointsB: any, tria: any, trib: any): any[];
      intersectAt(linea: any, lineb: any): number;
      /**计算体积 */
      getVolume(mesh: any): number;
      getVolume2(mesh: any): number;
  }

}
declare module 'bimwin-api/bimwin/component/mouseEvent2D' {
  import { BIMWin2D } from 'bimwin-api/bimwin/bimwin2d';
  /** 鼠标事件相关的操作 */
  export class InitMouseEvent2D {
      private type;
      /** 构造函数 */
      constructor(bimwin: BIMWin2D);
      switchClickEvent(type: any): void;
  }

}
declare module 'bimwin-api/bimwin/component/mouseEvent3D' {
  import { BIMWin3D } from 'bimwin-api/bimwin/bimwin3d';
  /** 鼠标事件相关的操作 */
  export class InitMouseEvent3D {
      private type;
      private group;
      private controls;
      private mouse;
      private _bimwin;
      private objects;
      private raycaster;
      isEnableSelect: boolean;
      /** 构造函数 */
      constructor(bimwin: BIMWin3D);
      switchClickEvent(type: any): void;
      render(): void;
      setIsEnableSelect(enable: boolean): void;
      onClick(event: any): void;
  }

}
declare module 'bimwin-api/bimwin/component/navigateAxis/navaxis.base' {
  export var navbase: string;

}
declare module 'bimwin-api/bimwin/component/navigateAxis/navaxis.dir' {
  export var navdir: string;

}
declare module 'bimwin-api/bimwin/component/navigateAxis/navigateAxis' {
  import * as THREE from "three";
  import { BIMWin3D } from 'bimwin-api/bimwin/bimwin3d';
  /**
   * 导向体
   */
  export class NavigateAxis {
      /** 引擎实例 */
      private bimwin;
      /** 轴场景 */
      private scene;
      /** 轴相机 */
      private camera;
      /** 轴渲染器 */
      renderer: THREE.WebGLRenderer;
      /** 挂载标签元素 */
      private hostedDiv;
      /** 轴场景canvas */
      canvas: HTMLCanvasElement;
      /** 轴相机所在轨道球半径 */
      private radius;
      /** 六面体 */
      private volumn;
      /** 场景 */
      private navVolumn;
      /** 高亮面对象 */
      private faceSelector;
      /** 光照 */
      private light;
      /** 点击中六面体nrml */
      private clickSeleckNrml;
      /**
       * 构造函数
       * @param bimwin3d
       */
      constructor(bimwin3d: BIMWin3D);
      /**
       * 初始化场景
       * @param hostDiv
       */
      InitScene(hostDiv: HTMLDivElement): void;
      /** 设置导航按钮的颜色 */
      SetColor(clr: string | number): void;
      SetVisible(visible?: boolean): void;
      /** 渲染计数 */
      private renderTotal;
      /**
       * 渲染导向体
       * @param cb
       */
      Render(cb: number): void;
      private ShowNavVolumn;
      /**
       * 注册事件
       */
      private RegisterEvents;
      private GenerateNavUri;
      /**
       * 导入六面体
       * @returns
       */
      private ImportNavCube;
      /**
       * 获取鼠标命中的面
       * @param evt
       * @returns
       */
      private getHitFace;
      /**
       * 切换到点击面
       * @param evt
       * @returns
       */
      private navToHit;
      /**
       * 高亮命中的面
       * @param evt
       * @param enable
       * @returns
       */
      private hintHitFace;
      /**
       * 获得图片
       * @param normal
       * @param images
       * @returns
       */
      private getTexture;
      /**
       * 清理
       */
      dispose(): void;
      /**
       * 三维里，Y和Z反转过的
       * @param v
       * @returns
       */
      private InvertYZ;
      /**
       * 设置视角
       * @param up 上方向 单位向量
       * @param dir 视线方向 单位向量
       */
      SetRotation(up: THREE.Vector3, dir: THREE.Vector3): void;
      /**
       * 通过矩阵设置视角
       * @param matrix 当前视角的相机
       */
      SetRotationByMatrix(matrix: THREE.Matrix4): void;
      /**
       * 显示坐标轴
       * @param matrix 相机矩阵
       */
      static ShowTri(matrix: THREE.Matrix4, scene: THREE.Scene, len: number): void;
      static ShowOrigin(pos: THREE.Vector3, scene: THREE.Scene, len: number): void;
      /**
       * 绘制线
       * @param st 起点
       * @param ed 终点
       * @param color 颜色
       */
      static DrawALine(st: THREE.Vector3, ed: THREE.Vector3, color: number, scene: THREE.Scene): THREE.Line;
      /**
       * 隐藏/显示
       * @param type 是否显示
       */
      SetDisplayType(type: any): void;
  }

}
declare module 'bimwin-api/bimwin/component/Octree' {
  import * as THREE from 'three';
  import { BIMWin3D } from 'bimwin-api/bimwin/bimwin3d';
  import { BoundingBox } from 'bimwin-api/bimwin/core/boundingBox';
  import { Mesh } from 'bimwin-api/bimwin/core/staticMeshBlock';
  /**
   * 自制Octree
   */
  class Octree {
      bounds: THREE.Box3;
      mesh: Mesh[];
      subTrees: Octree[];
      /**
       * 包围盒
       */
      box: THREE.Box3;
      /**
       * 最大深度
       */
      maxDepth: number;
      bimwin: BIMWin3D;
      constructor(box?: THREE.Box3, level?: number);
      populateDataStructure(bimwin: BIMWin3D): void;
      /**
       * 通过包围盒粗略得到结果
       * 类型：交叉型
       */
      intersectsByBoundingBox(box: THREE.Box3, arr: any[]): void;
      static containBox(box: THREE.Box3, contain: THREE.Box3): boolean;
      /**
       * 被交叉和包含的包围盒都会成为最后的结果
       */
      intersectsAndContainByBoundingBox(box: THREE.Box3, arr: any[]): void;
      /**
       * 通过三角面片精确查找是否碰撞
       */
      intersectsByTriangle(box: THREE.Box3): {
          /**
           * 是否碰撞
           */
          collision: boolean;
          /**
           *  被碰撞的msh
           */
          mesh: Mesh[];
          /**
           * 被碰撞的三角面
           */
          triangle: THREE.Triangle;
          triangles: THREE.Triangle[];
          /**
           * 是否是地面碰撞
           */
          floorType: number;
          /**
           * 所有被碰撞的包围盒
           */
          boundingBox: BoundingBox;
      };
      calcBox(): this;
      build(): this;
      split(level: any): this;
  }
  export { Octree };

}
declare module 'bimwin-api/bimwin/component/OctreeHelper' {
  import { LineSegments } from 'three';
  class OctreeHelper extends LineSegments {
      octree: any;
      color: number;
      constructor(octree: any, color?: number);
  }
  export { OctreeHelper };

}
declare module 'bimwin-api/bimwin/component/OutLineEffect' {

}
declare module 'bimwin-api/bimwin/component/OutlineNode' {
  import { BIMWin3D } from "bimwin-api/bimwin/bimwin3d";
  /**
   * 三维鼠标悬浮，显示构件外轮廓
   */
  export class OutlineNode {
      private _events;
      private _scene;
      private _group;
      private _group2;
      private _bw;
      private _mat;
      /**
       * 轮廓效果，使能开关
       */
      private _enable;
      /**
       * 强制打断_enable的状态
       */
      _syncEnable: boolean;
      private _shaderMat;
      private _fxaaMaterial;
      constructor(bw: BIMWin3D);
      /**
       * 网格结点融合
       * @param meshes
       */
      private MergeMesh;
      /**
       * 启停外轮廓
       * @param v
       * @returns
       */
      SetEnable(v: boolean, sync?: boolean): void;
  }

}
declare module 'bimwin-api/bimwin/component/rectSelection' {
  /*********************
   ** 文件说明 选择矩形区域的构件
   ** 创建时间 20211118
   ** 创建人   樊永炼
  **********************/
  import * as THREE from "three";
  import { RectSelectedArg } from 'bimwin-api/api/types/BwEventTypes';
  import { BIMWin2D } from 'bimwin-api/bimwin/bimwin2d';
  import { BIMWin3D } from "bimwin-api/bimwin/bimwin3d";
  import { Delegate } from 'bimwin-api/bimwin/event';
  /**
   * 框选实现
   */
  export class RectSelection {
      /** bimwin对象 */
      private _bw;
      /** 鼠标事件 */
      private _mouseEvts;
      /** 框选容器 */
      private _container;
      /** 放大结束事件 */
      onZoomEnd: Delegate<any>;
      /** 框选事件 */
      private event;
      /** bimwin切换事件 */
      onBimWinChange: Delegate<BIMWin3D | BIMWin2D>;
      /** 获取框选事件对象 */
      get SelectedEvent(): Delegate<RectSelectedArg>;
      /** 构造函数 */
      constructor(bw: BIMWin3D | BIMWin2D);
      /**
       * 是否处于唤醒状态
       */
      get IsWoke(): boolean;
      /**
       * 启动框选功能
       * @param enable true,启动框选；false,取消框选
       */
      WakeUp(enable: boolean): void;
      /**
       * 打开
       */
      SwitchOn(): void;
      /**
       * 关闭
       */
      SwitchOff(): void;
      /**
       * 投影到标准设备坐标
       * @param v2 二维屏幕坐标
       * @returns 返回三维标准设备坐标
       */
      private project;
      /**
       * 三维世界坐标投影到标准设备坐标
       * @param v3
       * @returns
       */
      private unproject;
      /**
       * 高亮框选的构件
       * @param rect 屏幕起点和终点
       * @param highlight true,高亮构件；false,不高亮
       */
      Calculate(rect: THREE.Vector4, highlight?: boolean): string[];
      /** 默认的绘制函数 */
      private Draw;
      /**
       * 框选放大
       */
      Zoomup(): void;
  }

}
declare module 'bimwin-api/bimwin/component/RoamMap' {
  import { BIMWin3D } from "bimwin-api/bimwin/bimwin3d";
  import * as THREE from 'three';
  import { EditorControls2D } from "bimwin-api/bimwin/camera/editorControls2D";
  /**
   * 漫游地图
   */
  class RoamMap {
      dom: HTMLElement;
      bimwin: BIMWin3D;
      renderer: THREE.WebGLRenderer;
      canvas: HTMLCanvasElement;
      camera: THREE.OrthographicCamera;
      cameraControls: EditorControls2D;
      constructor(dom: HTMLElement | string, bimwin: BIMWin3D);
  }
  export { RoamMap };

}
declare module 'bimwin-api/bimwin/component/RoobotControl' {
  import * as THREE from "three";
  import { BIMWin3D } from "bimwin-api/bimwin/bimwin3d";
  import { Event } from "bimwin-api/bimwin/event";
  import { Octree } from 'bimwin-api/bimwin/component/Octree';
  interface API {
      state: string;
      [key: string]: string | Function;
  }
  interface ACTIONS {
      [key: string]: THREE.AnimationAction;
  }
  /**
   * 人物<机器>控制
   * @author chendm
   */
  class RoobotControl {
      scene: THREE.Scene;
      camera: THREE.PerspectiveCamera;
      renderer: THREE.WebGLRenderer;
      gltf: string;
      api: API;
      emotes: string[];
      states: string[];
      standing: string;
      walking: string;
      mixer: THREE.AnimationMixer;
      model: THREE.Group;
      actions: ACTIONS;
      previousAction: any;
      activeAction: any;
      clock: THREE.Clock;
      playerDirection: THREE.Vector3;
      playerCollider: THREE.Box3;
      playerOnFloor: boolean;
      keypress: {};
      firstKeyDown: boolean;
      onReady: Function;
      bimwin: BIMWin3D;
      octree: Octree;
      helper: any;
      debug: boolean;
      events: Event<any>[];
      constructor(bimwin: BIMWin3D);
      init(): void;
      createBimwinRenderEvent(): void;
      unregisterBimwinRenderEvent(): void;
      /**
       * 暂时关闭
       */
      close(): void;
      /**
       * 将关闭的事件/元素显示
       */
      show(): void;
      /**
       * 摧毁
       */
      destory(): void;
      createControlEvents(): void;
      removeControlEvents(): void;
      createKeyDown(e: {
          key: string;
      }): void;
      createKeyUp(e: {
          key: string;
      }): void;
      createEmotes(): void;
      fadeToAction(name: string, duration: number): void;
      restoreState(): void;
      createActions(animations: any[]): void;
      /**
       * 对模型位置进行更改
       */
      setPosition(vec3: THREE.Vector3): void;
      /**
       * 对模型中心位置修改
       */
      updatePositionCenter(): void;
      /**
       * 调整相机视角
       */
      resetCamera(): void;
  }
  export { RoobotControl };

}
declare module 'bimwin-api/bimwin/component/sectionBox' {
  import * as THREE from 'three';
  import { BIMWin3D } from "bimwin-api/bimwin/bimwin3d";
  import { Color4, SectionData } from 'bimwin-api/bimwin/types';
  export enum CUTMODEL {
      NORMAL = 0,
      REVERSE = 1
  }
  /**
   * 剖切框控件
   */
  export class SectionBox {
      bimwin: BIMWin3D;
      color: Color4;
      lineColor: THREE.Color;
      highlightColor: Color4;
      sectionData: SectionData;
      mode: CUTMODEL;
      sizex: number;
      sizey: number;
      sizez: number;
      positionx: number;
      positiony: number;
      positionz: number;
      boxSize: any;
      private box;
      private lineBox;
      private colorsBuffer;
      private events;
      private visible;
      private object;
      private highlightPlane;
      private stencil;
      private planes;
      private isEnableStencil;
      private isAxis;
      private axisPlane;
      private axisPlaneWire;
      private axisControl;
      private axialDir;
      private customBoxMesh;
      private customShape;
      private twoDimension;
      private customShapeEvent;
      constructor(bimwin: BIMWin3D);
      /**
       * 自定义形状交互
       * @param dir 剖切方向
       */
      startCustomShape(dir: CUTMODEL): void;
      /**
       * 自定义形状交互终止
       */
      stopCustomShape(): void;
      /**
       * 自定义平面裁剪关闭
       */
      closeCustomShape(): void;
      /**
       * 自定义平面剖切面反向
       */
      customShapeReverse(): void;
      /**
       * box裁剪反向
       */
      boxCutReverse(): void;
      /**
      * 自定义形状剖切
      */
      customShapeSection(plane: THREE.Plane): void;
      /**
      * 开启交互式盒子裁剪
      */
      startCustomBoxCut(): void;
      /**
       * 隐藏显示控件
       */
      showControl(bool: boolean): void;
      /**
       * 盒子裁剪 自定义位置
       */
      customBoxCut(x: number | THREE.Vector3, y?: number, z?: number): void;
      private clearData;
      dispose(): void;
      /**
       * 获取剖切框参数
       * @returns 剖切框参数
       */
      getSectionData(): SectionData;
      /**
       * 剖切调整方法
       */
      private bilateralAdjustSection;
      /**
       * 双向调整剖切框数据 X方向
       */
      bilateralAdjustSectionX(a: number, b: number): void;
      /**
       * 双向调整剖切框数据 Y方向
       */
      bilateralAdjustSectionY(a: number, b: number): void;
      /**
       * 双向调整剖切框数据 Z方向
       */
      bilateralAdjustSectionZ(a: number, b: number): void;
      /**
       * 设置剖切框数据
       * @param sectionData 剖切框数据
       */
      setSectionData(sectionData: SectionData): void;
      materialSectioning(): void;
      /**
       * 重置剖切盒大小
       */
      resetSectionBox(): void;
      /**
       * 设置剖切盒的模式<正向 反向>
       */
      triggerModel(): void;
      /**
       * 显示隐藏剖切盒
       */
      showOrHiddenSectionBox(visible: boolean): void;
      axisalSection(group: THREE.Mesh<THREE.BufferGeometry, THREE.Material | THREE.Material[]>): void;
      /**
       * 更改轴向
       */
      changeAxialDir(dir: string): void;
      /**
       * 显示隐藏轴向剖切盒
       */
      showOrHiddenAxialBox(visible: boolean): void;
      /**
       * 关闭轴向剖切盒
       */
      closeAxialBox(): void;
      controlAxisHide(bool: any): void;
      changeControlAxis(): void;
      setControlModel(mode: string): void;
      /**
       * 创建轴向剖切必须的组件
       */
      createAxialComponent(): void;
      /**
       * 启用轴向剖切盒
       */
      showAxial(): void;
      /**
       * 清除剖切面
       */
      private clearStencil;
      /**
       * 生成剖切面
       */
      generateCutPlanes(): void;
      createPlaneStencilGroup(geometry: any, plane: any, renderOrder: any): THREE.Group;
      /**
       * 通过鼠标调整剖切盒
       * @param {'x'|'y'|'z'} direction 代表方向
       * @param {0|1} maxSize 是否是最大值的一侧
       */
      private adjustSectionByMouse;
      /**
       * 显示剖切框控件
       */
      show(callback?: Function): void;
      /**
       * 摧毁剖切框控件
       * @param keepSectionPlanes 是否保留剖切结果
       */
      close(keepSectionPlanes?: boolean): void;
      /**
       * 更新剖切框颜色 (当修改了color\lineColor\highlightColor时调用刷新)
       */
      updateColor(): void;
  }

}
declare module 'bimwin-api/bimwin/component/slideSelection' {
  export class SlideSelection {
      Init(): void;
      /**
       * 切换点击模式开关
       * @param type
       */
      switchType(type: any): void;
  }

}
declare module 'bimwin-api/bimwin/component/TwoDimension' {
  import { Platform } from "bimwin-api/api";
  import * as THREE from 'three';
  import { BIMWin2D } from 'bimwin-api/bimwin/bimwin2d';
  import { BIMWin3D } from 'bimwin-api/bimwin/bimwin3d';
  interface Point {
      x?: number;
      y?: number;
      v: THREE.Vector3;
      q?: THREE.Quaternion;
  }
  /**
   * 点渲染方式
   */
  enum RenderType {
      POINT = 0,
      LINES = 1,
      PLANE = 2
  }
  /**
   * 对于二维操作进行抽离
   */
  class TwoDimension {
      _plaform: Platform;
      points: Point[];
      svg: SVGElement | null;
      _bimwin: BIMWin3D | BIMWin2D | undefined;
      userDom: HTMLElement;
      constructor(_plaform: Platform | undefined, _bimwin?: BIMWin3D | BIMWin2D);
      /**
      * 添加点
      */
      addPoint(point: Point): void;
      private GetFrustumFromCamera;
      /**
       * 渲染
       * @param type 点的渲染方式
       */
      pointRender(type?: RenderType): void;
      /**
       * 用户鼠标导航功能块
       */
      startUserMouseGuide(text: string, options?: any): void;
      private userMouseMove;
      private userMouseEnd;
      /**
       * 摧毁
       */
      destory(): void;
      /**
       * 清空结果
       */
      clearResult(): void;
  }
  export { TwoDimension, RenderType };

}
declare module 'bimwin-api/bimwin/core/boundingBox' {
  import * as THREE from 'three';
  import { SectionData } from 'bimwin-api/bimwin/types';
  /**
   * 包围盒数据
   */
  export class BoundingBox {
      private _isEmpty;
      minx: number;
      miny: number;
      minz: number;
      maxx: number;
      maxy: number;
      maxz: number;
      get max(): THREE.Vector3;
      get min(): THREE.Vector3;
      get center(): THREE.Vector3;
      get size(): THREE.Vector3;
      get radius(): number;
      get isEmpty(): boolean;
      /**
       * 克隆返回一个新实例对象
       */
      clone(): BoundingBox;
      /**
       * 根据当前包围盒数据生成对应的剖切框数据
       * @returns 剖切框数据
       */
      toSectionData(): SectionData;
      constructor(minx?: number, miny?: number, minz?: number, maxx?: number, maxy?: number, maxz?: number);
      /**
       * 清空包围框和使其成为Empty
       */
      clear(): void;
      /**
       * 将指定的包围盒范围包含进来
       * @param boundingBox 指定的包围盒
       */
      combin(boundingBox: BoundingBox): void;
      /**
       * 与向量求交
       * @param v3
       */
      combine(v3: THREE.Vector3): void;
      /**
       * 将指定的包围盒范围包含进来
       */
      combinFromNumber(minx: number, miny: number, minz: number, maxx: number, maxy: number, maxz: number): this;
      /**
       * 将指定的点集数组包含进来
       */
      combinFromArray(array: Float32Array): void;
      /**
       * 通过当前包围盒数据生成对应的Plane列表
       * @returns Plane列表
       */
      getPlanes(): THREE.Plane[];
  }

}
declare module 'bimwin-api/bimwin/core/htmlBindHandle' {
  import * as THREE from 'three';
  import { BIMWin2D } from 'bimwin-api/bimwin/bimwin2d';
  import { BIMWin3D } from "bimwin-api/bimwin/bimwin3d";
  export class HtmlBindHandle {
      private bimwin;
      private event;
      point: THREE.Vector3;
      unprojectPoint: THREE.Vector3;
      element: HTMLElement;
      constructor(bimwin: BIMWin3D | BIMWin2D, point: THREE.Vector3, element: HTMLElement);
      dispose(): void;
  }

}
declare module 'bimwin-api/bimwin/core/intersect' {
  import * as THREE from 'three';
  import { Mesh, Node } from 'bimwin-api/bimwin/core/staticMeshBlock';
  import { BIMWin3D } from "bimwin-api/bimwin/bimwin3d";
  /**
   * 射线与模型相交计算返回结果
   */
  export interface Intersection {
      /**
       * 是否有相交计算结果
       */
      hit: boolean;
      /**
       * 相交计算所用到的射线
       */
      ray: THREE.Ray;
      /**
       * 射线与Node交点距离
       */
      distance?: number;
      /**
       * 被选中的构件节点
       */
      node?: Node;
      /**
       * 被选中的子构件
       */
      mesh?: Mesh;
      /**
       * 被选中Mesh与射线的交点
       */
      point?: THREE.Vector3;
      /**
       * 被选中的Mesh中三角面UV
       */
      uv?: THREE.Vector2;
      /**
       * 被选中的Mesh中三角面序号
       */
      faceIndex?: number;
  }
  /**
   * 应用剖切框数据到射线
   * @param clippingPlanes 剖切框数据
   */
  export function applyClippingPlanes(raycaster: THREE.Raycaster, clippingPlanes: THREE.Plane[]): THREE.Raycaster;
  export interface ExtraParameters {
      bimwin: BIMWin3D;
      offset: {
          x: number;
          y: number;
          type: string; /**@description 代表精度, 不填或者0代表正常精度 */
          precision?: number;
      };
  }
  export function intersectsInstancedMesh(raycaster: THREE.Raycaster, meshes: Mesh[], extraParameters?: ExtraParameters): Intersection;
  /**
   * 执行模型与射线的相交计算
   * @param raycaster 射线
   * @param meshes 模型列表
   * @param extraParameters 额外参数
   * @returns 射线与模型相交计算返回结果
   */
  export function intersectsMesh(raycaster: THREE.Raycaster, meshes: Mesh[], extraParameters?: ExtraParameters): Intersection;
  /**
   * 执行线框模型的相交计算
   * @param ray 射线
   * @param subLineMeshes 线框模型列表
   * @param treshold 线框线段与射线相交接受精度
   */
  export function intersectsLineMesh(raycaster: THREE.Raycaster, lineMeshes: Mesh[], treshold?: number): Intersection;
  /**
   * 执行线段与射线相交计算
   * @param ray 射线
   * @param pointA 线段端点A
   * @param pointB 线段端点B
   * @param threshold 射线相交计算的容许误差范围
   * @returns 相交的线段上的点 如果没有相交则返回null
   */
  export function intersectionLine(ray: THREE.Ray, pointA: THREE.Vector3, pointB: THREE.Vector3, threshold: number): THREE.Vector3;

}
declare module 'bimwin-api/bimwin/core/materialManager' {
  /*********************
   ** 文件说明 材质管理器
   ** 创建时间 20220419
   ** 创建人   樊永炼
  **********************/
  import * as THREE from "three";
  /** 材质管理器 */
  export class MaterialManager {
      /** 维护的所有材质 */
      materials: Map<string, THREE.Material>;
      constructor();
      /** 获取材质 */
      GetMaterial(mat: THREE.Material): THREE.Material;
      /** 判断材质是否相等 */
      IsEqualMaterials(mat0: THREE.Material, mat1: THREE.Material): boolean;
  }

}
declare module 'bimwin-api/bimwin/core/share/InstancedLineMaterial' {
  import * as THREE from 'three';
  /** 实例化材质 */
  export class InstancedLineMaterial {
      static NewMaterial(color: THREE.Color, alpha?: number): THREE.RawShaderMaterial;
      static SetAlpha(mat: THREE.RawShaderMaterial, alpha: number): void;
      static UseInstanceColor(mat: THREE.RawShaderMaterial): void;
      static SetCameraPosition(mat: THREE.RawShaderMaterial, p: THREE.Vector3, n: number, f: number): void;
      static NewGeometry(): THREE.InstancedBufferGeometry;
      static SetMatrix(geo: THREE.InstancedBufferGeometry, ix: number, matrix: THREE.Matrix4): void;
      static SetColor(geo: THREE.InstancedBufferGeometry, ix: number, clr: THREE.Color): void;
  }

}
declare module 'bimwin-api/bimwin/core/share/SharedIndex' {
  import * as THREE from 'three';
  import { BoundingBox } from 'bimwin-api/bimwin/core/boundingBox';
  /**
   * 共享基础节点
   */
  export class FSharedBaseNode {
      /** 基础节点Id */
      BaseNodeId: string;
      /** 基础文件索引 */
      FileId: number;
  }
  /**
   * 共享单元节点
   */
  export class FSharedNode {
      /** 共享单元节点Id */
      NodeId: string;
      /** 共享基础索引 */
      SharedId: number;
      /** 共享单元矩阵 */
      Matrix: THREE.Matrix4;
      /** 实际的包围盒 */
      Box: BoundingBox;
  }
  /**
   * 共享基础文件
   */
  export class FSharedBaseNodeFile {
      /** 共享基础的文件名 */
      FileName: string;
      /** 文件加载状态 */
      Loded: boolean;
  }
  /**
   * 共享单元索引集合数据结构
   */
  export class FSharedFileIndex {
      /** 共享单元基础所在文件索引 */
      BaseNodes: FSharedBaseNode[];
      /** 共享单元节点对象 */
      Nodes: FSharedNode[];
      /** 共享单元基础所在文件 */
      BaseFiles: FSharedBaseNodeFile[];
  }

}
declare module 'bimwin-api/bimwin/core/share/SharedNode' {
  import * as THREE from 'three';
  import { Mesh, Node } from "bimwin-api/bimwin/core/staticMeshBlock";
  /**
   * 共享单元节点
   */
  export class SharedNode extends Node {
      /** 基础单元节点 */
      BaseNode: Node;
      /**
       * 场景偏移矩阵
       */
      SceneMatrix: THREE.Matrix4;
      stateMat: THREE.Material;
      constructor();
      /** [隐藏:-1] [高亮:0] [材质:1] [半透明:2] [着色:3] [自定义材质:4] */
      setState(state: number, closeDepthTest?: boolean): void;
      setClayColor(color: THREE.Color): void;
      setLineClayColor(color: THREE.Color): void;
      applyMatrix(_matrix: THREE.Matrix4): void;
      /**
       * 计算网格的矩阵，返回的矩阵要修改需要使用副本
       * @param mesh
       * @returns
       */
      CalcMeshMatrix(mesh: Mesh): THREE.Matrix4;
      /**
       * 节点矩阵
       */
      get NodeMatrix(): THREE.Matrix4;
      /**
       * 合并所有网格
       * @param option
       * @returns
       */
      MergeMesh(option?: {
          ignoreLine?: boolean;
      }): Mesh;
  }

}
declare module 'bimwin-api/bimwin/core/SharedMeshBlock' {
  import * as THREE from 'three';
  import { Mesh, Node } from 'bimwin-api/bimwin/core/staticMeshBlock';
  import { SharedNode } from 'bimwin-api/bimwin/core/share/SharedNode';
  /**
   * 共享单元绘制块
   */
  export class SharedMeshBlock {
      /** 渲染块的id */
      _id: number;
      _mesh: Mesh;
      _realMeshs: THREE.InstancedMesh[] | THREE.Mesh[] | THREE.LineSegments[];
      _scene: THREE.Scene;
      _nodes: SharedNode[];
      /** 更新数据 */
      needRefresh: boolean;
      _materials: THREE.Material[];
      _geo: THREE.BufferGeometry | THREE.InstancedBufferGeometry;
      constructor(sc: THREE.Scene);
      get materials(): THREE.Material[];
      SetMesh(mm: Mesh, nds: SharedNode[]): void;
      /**
       * 刷新
       * @returns
       */
      Refresh(force?: boolean): void;
      RenderCustom(nodes: Node[]): void;
      removeMesh(): void;
      addMesh(): void;
  }
  /**
   * 共享单元线框绘制块
   */
  export class SharedContourBlock {
      /** 渲染块的id */
      _id: number;
      /** 隐藏 */
      isHide: boolean;
      _mesh: Mesh;
      _realMeshs: THREE.LineSegments[];
      _scene: THREE.Scene;
      _nodes: SharedNode[];
      /** 更新数据 */
      needRefresh: boolean;
      _materials: THREE.Material[];
      _geo: THREE.InstancedBufferGeometry;
      get materials(): THREE.Material[];
      constructor(sc: THREE.Scene);
      SetMesh(mm: Mesh, nds: SharedNode[]): void;
      /**
       * 刷新
       * @returns
       */
      Refresh(force?: boolean): void;
      RenderCustom(nodes: Node[]): void;
      removeMesh(): void;
      addMesh(): void;
  }

}
declare module 'bimwin-api/bimwin/core/staticMeshBlock' {
  import * as THREE from 'three';
  import { BIMWin2D } from 'bimwin-api/bimwin/bimwin2d';
  import { BIMWin3D } from 'bimwin-api/bimwin/bimwin3d';
  import { BoundingBox } from 'bimwin-api/bimwin/core/boundingBox';
  import { SharedMeshBlock, SharedContourBlock } from 'bimwin-api/bimwin/core/SharedMeshBlock';
  export class Node {
      id: string;
      boundingBox: BoundingBox;
      meshes: Mesh[];
      lineMeshes: Mesh[];
      /**模型的所使用的材质状态值 [隐藏:-1] [高亮:0] [材质:1] [半透明:2] [着色:3] */
      state: number;
      /**在模型需要切换回去时存储的备用状态值  只存储 [材质:1] [半透明:2] [着色:3] */
      state2: number;
      clayColor: THREE.Color;
      lineClayColor: THREE.Color;
      closeDepthTest: boolean;
      /** 20221209,转换矩阵，可用于实例化或其他 */
      matrix: THREE.Matrix4;
      constructor();
      /** [隐藏:-1] [高亮:0] [材质:1] [半透明:2] [着色:3] [自定义材质:4] */
      setState(state: number, closeDepthTest?: boolean): void;
      setClayColor(color: THREE.Color): void;
      setLineClayColor(color: THREE.Color): void;
      applyMatrix(matrix: THREE.Matrix): void;
      /**
       * 合并顶点
       * @param option
       * @returns
       */
      MergeMesh(option?: {
          ignoreLine?: boolean;
      }): Mesh;
  }
  /**
   * 图元类型
   */
  export enum PriType {
      LINE = 0,
      MESH = 1
  }
  /**
   * 三角形区间包围盒，用于对大的Mesh对象加速求交
   */
  export interface MeshIndexSegment {
      offset: number;
      length: number;
      box: BoundingBox;
  }
  /**
   * 网格数据
   */
  export class Mesh {
      id: string;
      state: number;
      boundingBox: BoundingBox;
      indices: Uint8Array | Uint16Array | Uint32Array;
      positions: Float32Array;
      normals: Float32Array;
      uvs: Float32Array | Uint16Array;
      colors: Float32Array;
      clayColor: Float32Array;
      stateMat: THREE.Material;
      ownerNode: Node;
      ownerBlock: StaticMeshBlock | StaticLineMeshBlock | SharedMeshBlock | SharedContourBlock;
      closeDepthTest: boolean;
      /** 20221207，实例化时的材质对象 */
      sharedMat: THREE.Material;
      /** 20221210，实例化透明材质对象 */
      sharedTransparentMat: THREE.Material;
      /** 20221208，实例化时使用的保存有矩阵 */
      matrix: THREE.Matrix4;
      /** 图元类型 */
      type: PriType;
      /** 网格索引分段 */
      segments?: MeshIndexSegment[];
      constructor();
      Clone(): Mesh;
  }
  export class StaticMeshBlock {
      key: string;
      scene: THREE.Scene;
      meshes: Mesh[];
      hasUV: boolean;
      hasNormal: boolean;
      hasColor: boolean;
      materials: Array<THREE.Material>;
      needRefresh: boolean;
      indicesLength: number;
      tbufferGeometrys: Array<THREE.BufferGeometry>;
      tmeshes: Array<THREE.Mesh | THREE.Line>;
      stateMeshes: Array<THREE.Mesh | THREE.Line>;
      clearWhenDrawn: boolean;
      logicDisplay: boolean;
      _uuid: string;
      constructor(key: string, scene: THREE.Scene, hasNormal: boolean, hasUV: boolean, hasColor: boolean, materials: Array<THREE.Material>, clear?: boolean);
      addMesh(mesh: Mesh): void;
      removeMesh(mesh: Mesh): void;
      refresh(force: boolean): void;
      RefreshState4(): void;
      dispose(): void;
  }
  export class StaticLineMeshBlock {
      needRefresh: boolean;
      isHide: boolean;
      scene: THREE.Scene;
      meshes: Mesh[];
      materials: Array<THREE.Material>;
      indicesLength: number;
      hasColor: boolean;
      tbufferGeometrys: Array<THREE.BufferGeometry>;
      tmeshes: Array<THREE.LineSegments>;
      clearWhenDrawn: boolean;
      logicDisplay: boolean;
      bimwin: BIMWin3D | BIMWin2D;
      constructor(scene: THREE.Scene, materials: Array<THREE.Material>, clear?: boolean);
      addMesh(mesh: Mesh): void;
      removeMesh(mesh: Mesh): void;
      refresh(force: boolean): void;
      dispose(): void;
  }

}
declare module 'bimwin-api/bimwin/core/staticScene' {
  import * as THREE from 'three';
  import { BIMWin3D } from "bimwin-api/bimwin/bimwin3d";
  import { SceneLoadOption } from 'bimwin-api/bimwin/types';
  import { BoundingBox } from "bimwin-api/bimwin/core/boundingBox";
  import { Mesh, Node, StaticLineMeshBlock, StaticMeshBlock } from "bimwin-api/bimwin/core/staticMeshBlock";
  export class StaticScene {
      bimwin: BIMWin3D;
      staticMeshBlocks: StaticMeshBlock[];
      staticLineMeshBlocks: StaticLineMeshBlock[];
      staticLineMeshBlockBuff: StaticLineMeshBlock;
      highlightMaterial: THREE.Material;
      colorMaterial: THREE.Material;
      lineMaterial: THREE.Material;
      lineHighlightMaterial: THREE.Material;
      lineColorMaterial: THREE.Material;
      nodes: Node[];
      nodeMap: Map<string, Node>;
      meshes: Mesh[];
      lineMeshes: Mesh[];
      boundingBox: BoundingBox;
      constructor(bimwin: BIMWin3D);
      loadBWScene(root: string, arrayBuffer: ArrayBuffer, option: SceneLoadOption): Promise<void>;
      loadBWSceneFormUrl(root: string, fileName: string, option: SceneLoadOption): Promise<void>;
      loadBW3(arrayBuffer: ArrayBuffer, option: SceneLoadOption): void;
      private loadBW3V10000;
      private loadBW3V20000;
      removeNodes(ids: string[]): void;
      clear(): void;
      rebuild(force?: boolean): void;
      updateBoundBox(updateMeshBoundingBox: boolean): void;
      private matrixMultiply;
  }

}
declare module 'bimwin-api/bimwin/core/staticScene2d' {
  import * as THREE from 'three';
  import { BIMWin2D } from "bimwin-api/bimwin/bimwin2d";
  import { Delegate } from 'bimwin-api/bimwin/event';
  import { BinaryReader } from 'bimwin-api/bimwin/tool/binaryReader';
  import { NodeMeshItem, SceneLoadOption2D, SceneLoadProgress } from 'bimwin-api/bimwin/types';
  import { BoundingBox } from "bimwin-api/bimwin/core/boundingBox";
  import { Mesh, Node, StaticLineMeshBlock, StaticMeshBlock } from "bimwin-api/bimwin/core/staticMeshBlock";
  export class StaticScene2D {
      bimwin: BIMWin2D;
      staticMeshBlocks: StaticMeshBlock[];
      staticLineMeshBlocks: StaticLineMeshBlock[];
      staticMeshBlockBuff: Map<number, StaticMeshBlock>;
      staticLineMeshBlockBuff: Map<number, StaticLineMeshBlock>;
      highlightMaterial: THREE.Material;
      colorMaterial: THREE.Material;
      lineHighlightMaterial: THREE.Material;
      lineColorMaterial: THREE.Material;
      nodes: Node[];
      nodeMap: Map<string, Node>;
      meshes: Mesh[];
      lineMeshes: Mesh[];
      boundingBox: BoundingBox;
      useAsync: boolean;
      progress: SceneLoadProgress;
      /** 添加节点事件 */
      onNodeAdded: Delegate<NodeMeshItem>;
      constructor(bimwin: BIMWin2D);
      loadBWSceneFormUrl(root: string, fileName: string, option: SceneLoadOption2D): Promise<void>;
      loadBWScene(root: string, arrayBuffer: ArrayBuffer, option: SceneLoadOption2D): Promise<void>;
      loadBWScene400(root: string, arrayBuffer: ArrayBuffer, option: SceneLoadOption2D): Promise<void>;
      private _loadOrder;
      loadBW3(arrayBuffer: ArrayBuffer, option: SceneLoadOption2D): void;
      loadBW3V10000(br: BinaryReader, option: SceneLoadOption2D): void;
      refresh(force?: boolean): void;
      removeNodes(ids: string[]): void;
      clear(): void;
      updateBoundBox(updateMeshBoundingBox: boolean): void;
  }

}
declare module 'bimwin-api/bimwin/core/staticScene3d' {
  import * as THREE from 'three';
  import { BIMWin3D } from "bimwin-api/bimwin/bimwin3d";
  import { NodeMeshItem, SceneLoadOption3D, SceneLoadProgress } from 'bimwin-api/bimwin/types';
  import { BoundingBox } from "bimwin-api/bimwin/core/boundingBox";
  import { Node, Mesh, StaticMeshBlock, StaticLineMeshBlock } from "bimwin-api/bimwin/core/staticMeshBlock";
  import { Delegate } from 'bimwin-api/bimwin/event';
  import { MaterialManager } from 'bimwin-api/bimwin/core/materialManager';
  import { StaticScene3D_Shared } from 'bimwin-api/bimwin/core/staticScene3d.shared';
  import { ExtraParameters, Intersection } from 'bimwin-api/bimwin/core/intersect';
  export var CompressV1: number;
  export class StaticScene3D {
      bimwin: BIMWin3D;
      staticMeshBlocks: StaticMeshBlock[];
      staticLineMeshBlocks: StaticLineMeshBlock[];
      staticLineMeshBlockBuff: StaticLineMeshBlock;
      highlightMaterial: THREE.Material;
      colorMaterial: THREE.Material;
      lineMaterial: THREE.ShaderMaterial;
      translucenceLineMaterial: THREE.Material;
      lineHighlightMaterial: THREE.Material;
      lineColorMaterial: THREE.Material;
      translucence: number;
      nodes: Node[];
      nodeMap: Map<string, Node>;
      meshes: Mesh[];
      lineMeshes: Mesh[];
      boundingBox: BoundingBox;
      /** 启用异步worker下载文件 */
      useAsync: boolean;
      /** 材质管理器 */
      materialManager: MaterialManager;
      /** 添加节点事件 */
      onNodeAdded: Delegate<NodeMeshItem>;
      /** 等待计算分段包围盒的mesh列表 */
      waitSegmentMeshes: Mesh[];
      /**
       * 测试用开关显示模型元素
       */
      _displayTest: {
          DisplayNormalMesh: boolean;
          DisplaySharedMesh: boolean;
          DisplayContour: boolean;
      };
      /**
       * 共享单元实现
       */
      _sharedScene3D: StaticScene3D_Shared;
      progress: SceneLoadProgress;
      constructor(bimwin: BIMWin3D);
      loadBWSceneFormUrl(root: string, fileName: string, option: SceneLoadOption3D): Promise<void>;
      loadBWScene(root: string, arrayBuffer: ArrayBuffer, option: SceneLoadOption3D): Promise<void>;
      private _loadOrder;
      loadBW3(arrayBuffer: ArrayBuffer, option: SceneLoadOption3D): void;
      private loadBW3V30000;
      private loadBW3V10000;
      private loadBW3V20000;
      removeNodes(ids: string[]): void;
      clear(): void;
      refresh(force?: boolean, logicDisplay?: boolean): void;
      updateBoundBox(updateMeshBoundingBox: boolean): void;
      static matrixMultiply(a: number[], b: number[]): number[];
      CalcMemory(): number;
      /**
       * 求与节点的相交网格
       * @param raycaster
       * @param meshes 非实例化
       * @param sharedMeshes 实例化的
       * @param extraParameters
       * @returns
       */
      intersectsMesh(raycaster: THREE.Raycaster, meshes: Mesh[], sharedMeshes: Mesh[], extraParameters?: ExtraParameters): Intersection;
      /**
       * 求与场景中的所有节点相交的具体网格位置
       * @param raycaster
       * @param extraParameters
       * @returns
       */
      intersect(raycaster: THREE.Raycaster, extraParameters?: ExtraParameters): Intersection;
      /**
       * 处理空闲时，大文件网格分片
       */
      triggerIdle(): void;
  }

}
declare module 'bimwin-api/bimwin/core/staticScene3d.shared' {
  import * as THREE from 'three';
  import { SceneLoadOption3D } from "bimwin-api/bimwin/types";
  import { StaticScene3D } from 'bimwin-api/bimwin/core/staticScene3d';
  import { Mesh, Node } from 'bimwin-api/bimwin/core/staticMeshBlock';
  import { SharedMeshBlock, SharedContourBlock } from 'bimwin-api/bimwin/core/SharedMeshBlock';
  import { SharedNode } from 'bimwin-api/bimwin/core/share/SharedNode';
  import { BIMWin3D } from 'bimwin-api/bimwin/bimwin3d';
  /**
   * 共享单元数据加载
   */
  export class StaticScene3D_Shared {
      /**
       * 3d场景引用
       */
      _scene3D: StaticScene3D;
      /**
       * 基础节点，保存数据。节点=>数据
       */
      _baseNodeMap: Map<string, Node>;
      /**
       * 共享单元，逻辑上的节点
       */
      _nodeMap: Map<string, SharedNode>;
      /**
       * 共享单元
       */
      _nodes: SharedNode[];
      /**
       * 实际的渲染块
       */
      _sharedMeshBlocks: SharedMeshBlock[];
      /**
       * 实际渲染块的轮廓
       */
      _sharedContourBlocks: SharedContourBlock[];
      /**
       * 基础到共享单元
       */
      _baseToSharedMap: Map<string, string[]>;
      /**
       * 网格
       */
      meshes: Mesh[];
      /**
       * 轮廓
       */
      lineMeshes: Mesh[];
      /**
       * 实例化的线材质。TODO
       */
      lineMaterial: {
          highlight: THREE.Material;
          normal: THREE.Material;
          half: THREE.Material;
          color: THREE.Material;
      };
      bimwin: BIMWin3D;
      /**
       * 构造函数
       */
      constructor(bimwin: BIMWin3D);
      /**
       * 初始化
       */
      Init(): void;
      /**
       * 加载共享单元索引文件
       * @param arrBuffer
       * @param root
       * @param option
       */
      LoadSharedIndex(arrBuffer: ArrayBuffer, root: string, option: SceneLoadOption3D): Promise<void>;
      /**
       * 构建共享单元
       * @param nodes
       * @param baseNode
       */
      BuildSharedMesh(nodes: SharedNode[], baseNode: Node): void;
      BuildSharedLine(nodes: SharedNode[], baseNode: Node): void;
      /**
       * 刷新实例化构件
       * @param force
       */
      Refresh(force?: boolean): void;
      /**
       * 加载共享单元网格基础数据并解析
       * @param arrBuffer
       * @param option
       */
      LoadBaseNodeFileV30000(arrBuffer: ArrayBuffer, option: SceneLoadOption3D): void;
      MergeSameMaterial(node: Node): void;
      /**
       * 加载实例化线框
       * @param arr
       * @param option
       */
      private LoadContour;
  }

}
declare module 'bimwin-api/bimwin/debug' {
  import * as THREE from 'three';
  export class DebugLine {
      scene: THREE.Scene;
      line: THREE.Line;
      constructor(scene: THREE.Scene, points?: THREE.Vector3[], color?: number);
      update(points: THREE.Vector3[], color?: number): void;
  }
  export class DebugBox {
      scene: THREE.Scene;
      box: THREE.Line;
      constructor(scene: THREE.Scene, point?: THREE.Vector3, size?: number, color?: number);
      update(point: THREE.Vector3, size?: number, color?: number): void;
  }

}
declare module 'bimwin-api/bimwin/entry' {
  import * as THREE from 'three';
  import { BIMWin2D } from 'bimwin-api/bimwin/bimwin2d';
  import { BIMWin3D } from 'bimwin-api/bimwin/bimwin3d';
  import { Event } from 'bimwin-api/bimwin/event';
  import { ViewDirection, SectionData, SelectMode, CameraType, CameraControlsType, CameraData, SceneLoadOption3D, SceneLoadOption2D, SceneLoadProgress, WalkthroughKeyFrame, WalkthroughOption } from 'bimwin-api/bimwin/types';
  import { HtmlBindHandle } from 'bimwin-api/bimwin/component/htmlBindHandle';
  import { SectionBox } from 'bimwin-api/bimwin/component/sectionBox';
  import { MeasureTool } from 'bimwin-api/bimwin/component/measureTool';
  import { Measure2DTool } from 'bimwin-api/bimwin/component/measure2dTool';
  import { Map2D } from 'bimwin-api/bimwin/component/map2d';
  import { Map3D } from 'bimwin-api/bimwin/component/map3d';
  import { Image3D } from 'bimwin-api/bimwin/component/image3d';
  import { SlideSelection } from 'bimwin-api/bimwin/component/slideSelection';
  import { RoamMap } from 'bimwin-api/bimwin/component/RoamMap';
  export { THREE, RoamMap, Event, BIMWin2D, SceneLoadOption2D, BIMWin3D, SceneLoadOption3D, SectionBox, MeasureTool, Measure2DTool, Map2D, Map3D, Image3D, SlideSelection, ViewDirection, SelectMode, CameraType, CameraControlsType, CameraData, SceneLoadProgress, SectionData, WalkthroughKeyFrame, WalkthroughOption, HtmlBindHandle, };

}
declare module 'bimwin-api/bimwin/event' {
  type CallBack<T> = (data: T) => void;
  export class Event<T> {
      private _unregister;
      callback: CallBack<T>;
      constructor(callback: CallBack<T>, once: boolean);
      /**
       * 执行事件 若执行完毕后需要注销事件则返回ture 否则返回false
       * @param data 执行事件的参数
       * @returns 若执行完毕后需要注销事件则返回ture 否则返回false
       */
      notify(data: T): boolean;
      /**
       * 在指定帧数后注销此事件
       * @param unregisterOnFrameCount 指定帧数 默认：0 (立即注销)
       */
      unregister(unregisterOnFrameCount?: number): void;
  }
  export class Delegate<T> {
      private events;
      constructor();
      isEmpty(): boolean;
      add(callback: CallBack<T>): Event<T>;
      addonce(callback: CallBack<T>): Event<T>;
      /**
       * 执行委托中的所有事件，若有执行过任何事件则返回Ture
       */
      notify(data: T): boolean;
      clear(): void;
  }
  export {};

}
declare module 'bimwin-api/bimwin/lineMesh/lineMaterial' {
  import * as THREE from 'three';
  export interface LineMaterialParameters extends THREE.ShaderMaterialParameters {
      color?: THREE.Color | number;
  }
  export class LineMaterial extends THREE.ShaderMaterial {
      constructor(parameters?: LineMaterialParameters);
  }

}
declare module 'bimwin-api/bimwin/lineMesh/lineSegmentsGeometry' {
  import * as THREE from 'three';
  export class LineSegmentsGeometry extends THREE.InstancedBufferGeometry {
      constructor();
      get isLineSegmentsGeometry(): boolean;
      applyMatrix4(matrix: any): this;
      setPositions(array: any): this;
      setColors(array: any): this;
      fromWireframeGeometry(geometry: any): this;
      fromEdgesGeometry(geometry: any): this;
      fromMesh(mesh: any): this;
      fromLineSegments(lineSegments: any): this;
      computeBoundingBox(): void;
      computeBoundingSphere(): void;
      toJSON(): void;
      applyMatrix(matrix: any): this;
  }

}
declare module 'bimwin-api/bimwin/material/blinkMaterial' {
  import * as THREE from 'three';
  class BlinkMaterial extends THREE.MeshStandardMaterial {
      time: number;
      /**
      * color ???
      * speed ??
      */
      constructor(color?: number | string, speed?: number);
      dispose(): void;
  }
  export { BlinkMaterial };

}
declare module 'bimwin-api/bimwin/tool/binaryReader' {
  import { BoundingBox } from "bimwin-api/bimwin/core/boundingBox";
  import * as THREE from 'three';
  export class BinaryReader {
      private dv;
      private _position;
      constructor(arrayBuffer: ArrayBuffer);
      get position(): number;
      getArrayBuffer(): ArrayBuffer;
      jump(position: number): void;
      seek(offset: number): void;
      bitAlignment(): void;
      readInt32(): number;
      readUint32(): number;
      readFloat32(): number;
      readUint8(): number;
      readUint16(): number;
      readBoolean(): boolean;
      readString(): string;
      readBoundingBox(): BoundingBox;
      readMatrix(): THREE.Matrix4;
      readArrayBuffer(arrayLength: number): ArrayBuffer;
      readUint8Array(arrayLength: number): Uint8Array;
      readUint32Array(arrayLength: number): Uint32Array;
      readUint16Array(arrayLength: number): Uint16Array;
      readFloat32Array(arrayLength: number): Float32Array;
      getFloat32Array(arrayLength: number): Float32Array;
      readVariableIntegerArray(arrayLength: number): Uint32Array | Uint16Array | Uint8Array;
      alignBuffer(unit: number): void;
  }

}
declare module 'bimwin-api/bimwin/tool/common' {
  /*********************
   ** 文件说明 通用的方法
   ** 创建时间 20211229
   ** 创建人   樊永炼
  **********************/
  import * as THREE from "three";
  export class ShapeBox2d {
      Min: THREE.Vector2;
      Max: THREE.Vector2;
      get Center(): THREE.Vector2;
      get Size(): THREE.Vector2;
      Set(points: THREE.Vector2[]): ShapeBox2d;
      SetByValues(minx: number, miny: number, maxx: number, maxy: number): ShapeBox2d;
      SetByCenter(center: THREE.Vector2, width: number, height: number): ShapeBox2d;
      Intersect(s1: ShapeBox2d): ShapeBox2d | null;
      static Map(s1: ShapeBox2d, s2: ShapeBox2d, d1: ShapeBox2d): ShapeBox2d;
  }
  /**
   * 补间动画
   */
  export class TweenAnimation {
      private _tween;
      UpdateAction: (newObj: any) => void;
      Tween(from: {}, to: {}, sec?: number, continuous?: boolean, autostart?: boolean): void;
      Stop(): void;
      Start(): void;
  }
  /** id类型 */
  export type IdKey = number;
  /** 惟一Id */
  export class UniqueId {
      private _cur;
      /** 下一个Id */
      Next(): IdKey;
  }
  /** 生成惟一Id */
  export var UniqueProducer: UniqueId;
  /** 通用的方法合集 */
  export class Common {
      static GetFileExtension(fName: string): string;
      static ScreenToViewport(pt: THREE.Vector2, scrWidth: number, srcHeight: number): THREE.Vector2;
      static Float16ToFloat32(v: Uint16Array): Float32Array;
      /**
       * 计算网格的法线
       * @param mesh
       */
      static ComputeVertexNormals(mesh: THREE.BufferGeometry): void;
      static ComputeBoundingSphere(geo: THREE.BufferGeometry): void;
      /** 获取uri的路径 */
      static GetUriPath(uri: string): string;
      static intersectTriangle(a: THREE.Vector3, b: THREE.Vector3, c: THREE.Vector3, direction: THREE.Vector3, origin: THREE.Vector3, target: THREE.Vector3): THREE.Vector3;
  }

}
declare module 'bimwin-api/bimwin/tool/download.worker' {
  export var worker: string;

}
declare module 'bimwin-api/bimwin/tool/FileCache' {
  /*********************
   ** 文件说明 文件缓存
   ** 创建时间 20220706
   ** 创建人   樊永炼
  **********************/
  /**
   * 文件缓存
   */
  export class _FileCache {
      /** 缓存数据库名字 */
      _cacheName: string;
      _version: string;
      /** 是否启用文件缓存 */
      enable: boolean;
      constructor();
      /** 初始化 */
      Init(enable?: boolean): void;
      GetCacheDB(): LocalForage;
      UpdateFile(fileId: string, updateTime: string, files: string[]): Promise<void>;
      /**
       * 强制清除所有数据
       * @returns
       */
      ForceClear(): void;
  }
  export var FileCache: _FileCache;

}
declare module 'bimwin-api/bimwin/tool/fileTool' {
  /** 文件下载工具 */
  export class FileTool {
      static UseIndexdb: boolean;
      /** web worker实例 */
      private static _worker;
      /** url与promise映射 */
      /** url与resolve映射 */
      private static _urlResolveMap;
      private static _headers;
      private static _loadLimit;
      /**
       *
       * @param url 下载地址
       * @param useAsync true: 启用异步下载，false：不启用异步下载
       * @returns 返回Promise
       */
      static DownloadFile(url: string, useAsync?: boolean): Promise<ArrayBuffer>;
      /**
       * 初始化下载worker
       */
      static InitDownloadWorker(option?: {
          apiVersion?: number;
      }): void;
      /**
       * 加载文件
       * @param uri
       * @returns
       */
      static LoadFile(uri: string): Promise<ArrayBuffer>;
  }

}
declare module 'bimwin-api/bimwin/tool/Octree/BwOctData' {
  /*********************
   ** 文件说明 bimwin的mesh数据保存结构
   ** 创建时间 20220119
   ** 创建人   樊永炼
  **********************/
  import { OctData, OctDataKey } from "bimwin-api/bimwin/tool/Octree/OctData";
  import { PositionSet } from "bimwin-api/bimwin/tool/Octree/OctreeCommon";
  import { Mesh } from 'bimwin-api/bimwin/core/staticMeshBlock';
  import * as THREE from "three";
  /** bimwin的mesh数据保存结构 */
  export class BwMeshOctData extends OctData {
      GetPositionSet(): PositionSet | undefined;
      /**
       * 创建一个OctData数据
       * @param id
       * @param box
       * @param data
       */
      static CreateOctData(id: OctDataKey, box: THREE.Box3, data: Mesh): OctData;
  }
  /** bimwin的line数据保存结构 */
  export class BwLineOctData extends OctData {
      GetPositionSet(): PositionSet | undefined;
      /**
       * 创建一个OctData数据
       * @param id
       * @param box
       * @param data
       */
      static CreateOctData(id: OctDataKey, box: THREE.Box3, data: Mesh): OctData;
  }

}
declare module 'bimwin-api/bimwin/tool/Octree/Octant' {
  /*********************
   ** 文件说明 八叉树结点
   ** 创建时间 20220112
   ** 创建人   樊永炼
  **********************/
  import * as THREE from 'three';
  import { OctDataCollection } from "bimwin-api/bimwin/tool/Octree/OctData";
  import { IdKey } from 'bimwin-api/bimwin/tool/Octree/OctreeCommon';
  /**
   * 八叉树结点
   */
  export class Octant {
      /** 包围盒 */
      Box: THREE.Box3;
      /** 结点深度 */
      readonly Depth: number;
      /** 八个子结点 */
      Children: Array<Octant>;
      /** 属于这个结点的数据集 */
      Elements: OctDataCollection;
      /** Octant的惟一Id */
      Id: IdKey;
      /** 父结点 */
      readonly Parent: Octant | undefined;
      get Center(): THREE.Vector3;
      /**
       *
       * @param min 最小点
       * @param max 最大点
       * @param parent 父结点
       * @param depth 深度
       */
      constructor(min: THREE.Vector3, max: THREE.Vector3, parent: Octant | undefined, depth?: number);
      private static _uniId;
      private static NextId;
      /** 分割出八个子结点 */
      Divide(): void;
      /**
       * 包含包围盒或返回最小包含的八叉树结点
       * @param box 要检测的包围盒
       * @param onlyCheck true:只做包含检测；false:返回最小包含的子结点
       * @returns
       */
      IsContainByBox(box: THREE.Box3): Boolean;
      /**
       * 容纳box的最小的子结点
       * @param box
       * @returns
       */
      ContainByBox(box: THREE.Box3): Octant | undefined;
      /**
       * 与包围盒相交
       * @param box 包围盒
       * @returns
       */
      IsIntersectByBox(box: THREE.Box3): Boolean;
      /**
       * 相交的所有子结点
       * @param box 包围盒
       */
      IntersectByBox(box: THREE.Box3): Octant[];
      /**
       * 是否与射线相交
       * @param ray 射线
       * @returns
       */
      IsIntersectByRay(ray: THREE.Ray): Boolean;
      /**
       * 与射线相交的子结点
       * @param ray 射线
       * @returns
       */
      IntersectByRay(ray: THREE.Ray): Octant[];
      /**
       * 是否与线相交
       * @param line 线
       * @param lineRay 射线
       * @param lineDis 线的长度
       * @returns
       */
      IsIntersectByLine(line: THREE.Line3, lineRay: THREE.Ray | undefined, lineDis: number | undefined): boolean;
      /**
       * 与线相交的子结点
       * @param line 线段
       * @param lineRay 线段的射线
       * @param lineDis 线的长度
       * @returns
       */
      IntersectByLine(line: THREE.Line3, lineRay: THREE.Ray | undefined, lineDis: number | undefined): Octant[];
      /**
       * 与球相交
       * @param sphere
       * @returns
       */
      IsIntersectBySphere(sphere: THREE.Sphere): Boolean;
      /**
       * 与球相交的子结点
       * @param sphere 球
       * @returns
       */
      IntersectBySphere(sphere: THREE.Sphere): Octant[];
      /**
       * 与视景体相交判断
       * @param frustum
       * @returns
       */
      IsIntersectByFrustum(frustum: THREE.Frustum): Boolean;
      /**
       * 与视景体相交的子结点
       * @param ray 视景体
       * @returns
       */
      IntersectByFrustum(frustum: THREE.Frustum): Octant[];
  }

}
declare module 'bimwin-api/bimwin/tool/Octree/OctData' {
  /*********************
   ** 文件说明 数据接口
   ** 创建时间 20220112
   ** 创建人   樊永炼
  **********************/
  import * as THREE from "three";
  import { Octant } from 'bimwin-api/bimwin/tool/Octree/Octant';
  import { PositionSet } from "bimwin-api/bimwin/tool/Octree/OctreeCommon";
  /** 数据关键字 */
  export type OctDataKey = number | string;
  /** 八分仪中的数据 */
  export class OctData {
      /** 包围盒 */
      Box: THREE.Box3;
      /** Id号 */
      Id: OctDataKey;
      /** 所属的八叉树结点 */
      OwnOctant: Octant | undefined;
      /** 数据 */
      Data: any;
      /**
       * 获得测试数据
       * @returns
       */
      GetPositionSet(): PositionSet | undefined;
  }
  /**
   * 数据类型为面的BufferGeometry
   */
  export class MeshBufferGeometryOctData extends OctData {
      GetPositionSet(): PositionSet | undefined;
      /**
       * 创建一个OctData数据
       * @param id
       * @param box
       * @param data
       */
      static CreateOctData(id: OctDataKey, box: THREE.Box3, data: THREE.BufferGeometry): OctData;
  }
  /**
   * 数据类型为线的BufferGeometry
   */
  export class LineBufferGeometryOctData extends OctData {
      GetPositionSet(): PositionSet | undefined;
      /**
       * 创建一个OctData数据
       * @param id
       * @param box
       * @param data
       */
      static CreateOctData(id: OctDataKey, box: THREE.Box3, data: THREE.BufferGeometry): OctData;
  }
  /**
   * 八分仪结点元素集合
   */
  export class OctDataCollection {
      /** 数据集 */
      Children: Array<OctData>;
      /** 快速查找映射。数据过多时，要建立查寻映射 */
      private _dataMap?;
      constructor();
      /**
       * 增加元素
       * @param itm
       */
      Add(itm: OctData): void;
      /**
       * 查找所有的索引
       * @param id
       * @returns
       */
      private FindIndex;
      /**
       * 根据id查询元素
       * @param id
       * @returns
       */
      Find(id: OctDataKey): OctData | undefined;
      /**
       * 删除元素
       * @param itm
       */
      Remove(id: OctDataKey): void;
      /**
       * 合并数据
       * @param collection
       * @returns
       */
      static Merge(collection: OctDataCollection[]): OctData[];
      /**
       * 获得所有不重复的父结点
       * @param octants
       */
      static Upcast(octants: Octant[]): Octant[];
      /**
       * 返回所有的八叉树结点
       * @param octdts
       */
      static Distinct(octdts: OctData[]): Octant[];
  }

}
declare module 'bimwin-api/bimwin/tool/Octree/Octree' {
  /*********************
   ** 文件说明 八叉树
   ** 创建时间 20220112
   ** 创建人   樊永炼
  **********************/
  import * as THREE from "three";
  import { Octant } from "bimwin-api/bimwin/tool/Octree/Octant";
  import { OctData, OctDataKey } from 'bimwin-api/bimwin/tool/Octree/OctData';
  import { Intersection } from "bimwin-api/bimwin/tool/Octree/OctreeCommon";
  /** 八叉树 */
  export class Octree {
      /** 最大深度 */
      readonly MaxDepth: any;
      /** 树根 */
      Root: Octant;
      /** 项的映射，便于根据id查找,key为数据id,value为包装的数据 */
      DataMap: Map<OctDataKey, OctData>;
      /**
       * 构造函数
       * @param min 最小点
       * @param max 最大点
       * @param maxDepth 最大深度,默认为6
       */
      constructor(min: THREE.Vector3, max: THREE.Vector3, maxDepth?: number);
      /**
       * 填充八叉树
       * @param octdt 包装的数据
       */
      AddToTree(octdt: OctData): void;
      /**
       * 直接填充八叉树结点
       * @param octdt 数据
       * @param oct 结点
       * @returns 为true则添加成功；为false则添加失败
       */
      TryAdd(octdt: OctData, oct: Octant): boolean;
      /**
       * 移除id
       * @param id
       */
      Remove(id: OctDataKey): void;
      /**
       * 查找元素
       * @param id
       * @returns
       */
      Find(id: OctDataKey): OctData | undefined;
      /**
       * 与盒子相交的元素
       * @param box
       * @returns
       */
      IntersectByBox(box: THREE.Box3): OctData[];
      /**
       * 与射线相交的元素
       * @param ray
       * @returns
       */
      IntersectByRay(ray: THREE.Ray, upcast?: boolean): OctData[];
      /**
       * 与视景体相交的元素
       * @param ray
       * @returns
       */
      IntersectByFrustum(frustum: THREE.Frustum): OctData[];
      /**
       * 与视景体相交的元素
       * @param ray
       * @returns
       */
      IntersectBySphere(sphere: THREE.Sphere): OctData[];
      /**
       * 与射线相交的最近的对象
       * @param ray 射线
       * @param testRadiusForLine 线形的探测精度，周围半径
       * @returns
       */
      IntersectObject(ray: THREE.Ray, testRadiusForLine?: number): Intersection | undefined;
  }

}
declare module 'bimwin-api/bimwin/tool/Octree/OctreeCommon' {
  /*********************
   ** 文件说明 生成递增的整数惟一Id
   ** 创建时间 20220113
   ** 创建人   樊永炼
  **********************/
  import * as THREE from 'three';
  import { BufferGeometry } from 'three';
  /** id类型 */
  export type IdKey = number;
  /** 图元类型 */
  export enum PrimitiveType {
      LINE = 1,
      MESH = 2,
      POINT = 3
  }
  /** 与射线的交点 */
  export interface Intersection {
      /**
       * 是否有相交计算结果
       */
      hit: boolean;
      /**
       * 射线与Node交点距离
       */
      distance?: number;
      /**
       * 被选中Mesh与射线的交点
       */
      point?: THREE.Vector3;
      /**
       * 被选中的Mesh中三角面UV
       */
      uv?: THREE.Vector2;
      /**
       * 被选中的Mesh中三角面序号
       */
      faceIndex?: number;
      /**
       * 选中的mesh索引
       */
      meshId?: string | number;
      /**
       * 结点
       */
      nodeId?: string | number;
  }
  /** 三角形网格 */
  export interface PositionSet {
      /** 三角形索引 */
      Index: ArrayLike<number>;
      /** 顶点值 */
      Position: ArrayLike<number>;
      /** 图元类型 */
      Type: PrimitiveType;
      /** 包围盒 */
      Box?: THREE.Box3;
  }
  /** 惟一Id */
  export class UniqueId {
      private _cur;
      /** 下一个Id */
      Next(): IdKey;
  }
  /** 通用方法 */
  export class Common {
      /**
       * map转换为array
       * @param mp
       * @returns
       */
      static MapToArray<K, V>(mp: Map<K, V>): Array<V>;
      /**
       * 根据BufferGeometry构造PositionSet
       * @param geo 几何
       * @param priType 图元类型
       * @returns
       */
      static CreatePosSetByBufferGeometry(geo: BufferGeometry, priType?: PrimitiveType): PositionSet;
      /**
       * 根据属性构造PositionSet对象
       * @param geo
       * @param priType
       * @returns
       */
      static CreatePosSetWithGeometryAttribute(geo: {
          index: Uint16Array | Uint32Array | Uint8Array;
          position: Float32Array;
          box: THREE.Box3;
      }, priType?: PrimitiveType): PositionSet;
      /**
       * 三角网格与射线相交点
       * @param tris
       * @param ray
       * @param intersection
       * @returns
       */
      static IntersectWithRay(tris: PositionSet, ray: THREE.Ray, intersection: Intersection): void;
      /**
       * 射线与线段相交
       * @param lineSet
       * @param ray
       * @param testRadius square值
       * @param intersection
       * @returns
       */
      static IntersectWithLine(lineSet: PositionSet, ray: THREE.Ray, testRadius: number, intersection: Intersection): void;
  }

}
declare module 'bimwin-api/bimwin/types' {
  import * as THREE from 'three';
  export class Color4 extends THREE.Color {
      a: number;
      constructor(r: number, g: number, b: number, a: number);
  }
  export enum ViewDirection {
      Left = 32,
      Right = 16,
      Down = 8,
      Up = 4,
      Back = 2,
      Front = 1,
      LeftDown = 40,
      LeftUp = 36,
      LeftBack = 34,
      LeftFront = 33,
      RightDown = 24,
      RightUp = 20,
      RightBack = 18,
      RightFront = 17,
      DownBack = 10,
      DownFront = 9,
      UpBack = 6,
      UpFront = 5,
      LeftDownBack = 42,
      LeftDownFront = 41,
      LeftUpBack = 38,
      LeftUpFront = 37,
      RightDownBack = 26,
      RightDownFront = 25,
      RightUpBack = 22,
      RightUpFront = 21
  }
  export type BIMWinCamera = THREE.PerspectiveCamera | THREE.OrthographicCamera;
  export type SelectMode = 'nochoice' | 'singlechoice' | 'multiplechoice';
  export type CameraType = 'perspective' | 'orthographic';
  export type CameraControlsType = 'editor' | 'navigation';
  export type PickModel = 'normal' | 'adsorbent';
  export interface IVector3 {
      x: number;
      y: number;
      z: number;
  }
  export interface IVector4 {
      x: number;
      y: number;
      z: number;
      w: number;
  }
  export interface IColor {
      r: number;
      g: number;
      b: number;
  }
  /**相机数据 */
  export interface CameraData {
      position?: THREE.Vector3;
      rotation?: THREE.Euler;
      cameraType?: CameraType;
      controlsType?: CameraControlsType;
      left?: number;
      right?: number;
      top?: number;
      bottom?: number;
      dir?: THREE.Vector3;
  }
  /**场景加载参数 */
  export interface SceneLoadOption3D {
      fileMap?: any;
      /**是否加载线框模型 */
      loadLineMesh?: boolean;
      /**模型加载完毕后移动到的合适视角 为空则不移动现有视角*/
      viewDirection?: ViewDirection;
      /**如果不为空则将模型位置移动到指定位置
       * (注意:如果设置此值则viewDirection参数无效,因为场景最开始加载的时候外包围框需要重新计算) */
      sceneMatrix?: THREE.Matrix4;
      /**如果不为空则所有加载的构件Id都加上此前缀 */
      nodeIdPrefix?: string;
      /** 文件类型, "rpt"或"bpt"" */
      fileType?: string;
      /** 文件Id */
      fileId?: string;
      /** 文件版本 */
      fileVersion?: string;
  }
  export interface SceneLoadOption2D {
      /**如果不为空则将模型位置移动到指定位置 */
      sceneMatrix?: THREE.Matrix4;
      /**如果不为空则所有加载的构件Id都加上此前缀 */
      nodeIdPrefix?: string;
      /**加载完模型后是否重置视口到所有可见 */
      fitView?: boolean;
      /** 视点（二维视点） */
      target?: THREE.Vector3;
      /** 高度（二维视野） */
      height?: number;
      /** 宽度（二维视野） */
      width?: number;
      /** 使用相机（二维视野） */
      useCamera?: boolean;
      /** 文件Id */
      fileId?: string;
      /** 文件版本 */
      fileVersion?: string;
  }
  /**场景加载进度 */
  export interface SceneLoadProgress {
      /**总计需要加载的模型文件数量 */
      meshFileCount: number;
      /**已经完成加载的模型文件数量 */
      meshFileProgress: number;
      /**总计需要加载的线框模型文件数量 */
      lineMeshFileCount: number;
      /**已经完成加载的线框模型文件数量 */
      lineMeshFileProgress: number;
  }
  /**剖切框参数 */
  export interface SectionData {
      position: THREE.Vector3;
      size: THREE.Vector3;
      rotation: number;
  }
  /**漫游帧数据 */
  export interface WalkthroughKeyFrame {
      position: THREE.Vector3;
      rotation: THREE.Vector4;
      left?: number;
      right?: number;
      bottom?: number;
      top?: number;
      time: number;
  }
  /**漫游设置 */
  export interface WalkthroughOption {
      /**漫游播放速率 */
      timeScale: number;
  }
  /** 光照属性 */
  export interface LightAttr {
      light: THREE.Light;
      intensity: number;
  }
  /** 二维布局中的相机视口参数 */
  export class CameraViewPort {
      Camera?: THREE.OrthographicCamera;
      LeftBottom: THREE.Vector2;
      Width: number;
      Height: number;
  }
  /** 二维布局空间 */
  export class LayoutViewPort {
      Id: string;
      Center: THREE.Vector3;
      Width: number;
      Height: number;
      ViewCenter: THREE.Vector3;
      ViewWidth: number;
      ViewHeight: number;
      CamVp?: CameraViewPort;
  }
  /** 二维布局的视口 */
  export class Layout {
      Id: string;
      Name: string;
      Eye: THREE.Vector3;
      Up: THREE.Vector3;
      Target: THREE.Vector3;
      Width: number;
      Height: number;
      Viewports?: LayoutViewPort[];
      Bimwin?: any;
  }
  /**
   * 构件实例的序号
   */
  export interface NodeMeshItem {
      nodeId: string;
      meshId: string;
      count?: number;
      current?: number;
  }

}
declare module 'bimwin-api/bimwin/utils/index' {
  import * as THREE from "three";
  /**
   * 根据大小选择生成不同的typedArray
   */
  function chooseTypedArray(size: number): Uint8Array | Uint16Array | Uint32Array;
  /**
   * 从右往左获取第n位的数字直到第0位
   */
  function sliceNumber(a: number, n: number): number;
  /**
   * 合并geo
   */
  function mergeBufferGeometries(geometrys: Array<{
      indices: number[];
      positions: number[];
      colors: number[];
  }>): THREE.BufferGeometry;
  /**
   *
   * @param {THREE.Vector3} startPos 开始的点
   * @param {THREE.Vector3} direction 归一化向量
   * @param {number} dist 距离
   * @return {THREE.Vector3}
   * @description 从startPos位置 沿着向量 direction 前进一定dist距离 返回位置
   */
  function vectorIncreaseDistance(startPos: any, direction: any, dist: any): THREE.Vector3;
  function uuid(): string;
  function setCookies(key: string, value: string): void;
  function getCookie(key: string): string;
  function getAllCookies(): {};
  function removeObject3D(object3D: any): boolean;
  function isString(value: any): boolean;
  function isArray(value: any): boolean;
  function isObject(value: any): boolean;
  /**
   * Box3和三角的相交检测
   * @param point 如果传入值则将交点赋值给此变量
   */
  function intersectsBoxAndTriangle(box: THREE.Box3, triangle: THREE.Triangle, point?: THREE.Vector3): boolean;
  /**
   * 将纹理转成url可查看链接
   */
  function textureToUrl(target: THREE.WebGLRenderTarget, renderer: THREE.WebGLRenderer): string;
  export { isString, isArray, isObject, chooseTypedArray, sliceNumber, mergeBufferGeometries, vectorIncreaseDistance, uuid, setCookies, getCookie, removeObject3D, getAllCookies, intersectsBoxAndTriangle, textureToUrl };

}
declare module 'bimwin-api/BRender/BRender' {
  import { Box3, Camera, Object3D, OrthographicCamera, Scene, ShaderMaterial, WebGLRenderer, WebGLRendererParameters } from "three";
  import { EffectComposer } from "three/examples/jsm/postprocessing/EffectComposer";
  import { BIMWin3D } from "bimwin-api/api/index";
  export class BRender extends WebGLRenderer {
      bimwin: BIMWin3D;
      composer: EffectComposer;
      shadowDepthMaterial: ShaderMaterial;
      postCamera: OrthographicCamera;
      constructor(bimwin: BIMWin3D, params: WebGLRendererParameters);
      createControls(): void;
      /**
       * 多相机渲染阴影
       */
      multiCameraRendering(): void;
      /**
       * 根据场景大小创建正交相机
       * @param sceneBoundingBox 场景包围盒
       * @param frustumSize 视锥大小
       * @param dir 正交相机的方向
       * @returns
       */
      createOrthoCameras(sceneBoundingBox: Box3, frustumSize: number, dir?: number): {
          cameras: any[];
          projectionMatrix: any[];
          viewMatrix: any[];
      };
      renderBIMWIN(scene: BScene, camera: Camera): void;
  }
  export class BScene extends Scene {
      bimwin: BIMWin3D;
      matrixWorldAutoUpdate: any;
      constructor(bimwin: BIMWin3D);
      add(...object: Object3D[]): this;
      clone(recursive?: boolean): this;
      copy(source: any, recursive?: boolean): this;
  }

}
declare module 'bimwin-api/BRender/Light' {
  import * as THREE from 'three';
  export class DirectionalLight {
      lightDir: THREE.Vector3;
      factor: number;
      constructor(options: any);
      setValues(option: any): void;
  }

}
declare module 'bimwin-api/BRender/LineBaseMaterial' {
  import * as THREE from 'three';
  export class LineBaseMaterial extends THREE.ShaderMaterial {
      constructor();
      get color(): THREE.Color;
      set color(v: THREE.Color);
      get isInstance(): boolean;
      set isInstance(v: boolean);
      get clippingNum(): number;
      set clippingNum(v: number);
      get isClipping(): boolean;
      set isClipping(v: boolean);
      get clipPlanes(): THREE.Plane[];
      set clipPlanes(v: THREE.Plane[]);
      get clipInversion(): boolean;
      set clipInversion(v: boolean);
  }

}
declare module 'bimwin-api/BRender/MeshPhongMaterial' {
  import * as THREE from 'three';
  export class MeshPhongMaterial extends THREE.ShaderMaterial {
      constructor();
      get specularAttenuation(): boolean;
      set specularAttenuation(v: boolean);
      get useShadow(): boolean;
      set useShadow(v: boolean);
      get color(): THREE.Color;
      set color(v: THREE.Color);
      get texture(): THREE.Texture;
      set texture(v: THREE.Texture);
      get isInstance(): boolean;
      set isInstance(v: boolean);
      get clippingNum(): number;
      set clippingNum(v: number);
      get isClipping(): boolean;
      set isClipping(v: boolean);
      get clipPlanes(): THREE.Plane[];
      set clipPlanes(v: THREE.Plane[]);
      get clipInversion(): boolean;
      set clipInversion(v: boolean);
  }

}
declare module 'bimwin-api/components/Annotation/arrow' {
  export default class Arrow extends Shape {
      constructor(layer: any, stage: any, config: any);
      layer: any;
      stage: any;
      config: any;
      id: string;
      points: any[];
      index: number;
      name: string;
      callback: any;
      showTransformer: boolean;
      /**
       * 开始绘制
       */
      active(callback: any): void;
      isDraw: boolean;
      isPaint: boolean;
      pos: any;
      /**
       * 停止绘制
       */
      stop(): void;
      render(position: any): void;
      instance: import("konva/lib/shapes/Arrow").Arrow;
      /**
       * 创建一些锚点
       */
      buildAnchor(): void;
      tr: import("konva/lib/shapes/Transformer").Transformer;
  }
  import Shape from "bimwin-api/components/Annotation/shape.js";

}
declare module 'bimwin-api/components/Annotation/cloud' {
  export default class Cloud extends Shape {
      constructor(layer: any, stage: any, config: any);
      layer: any;
      stage: any;
      config: any;
      id: string;
      name: string;
      callback: any;
      /**
       * 开始绘制
       */
      active(callback: any): void;
      isdraw: boolean;
      isPaint: boolean;
      pos: any;
      /**
      * 拿到坐标点后直接根据点位重绘
      */
      repaint(position: any): void;
      instance: CloudRect;
      /**
       * 停止绘制
       */
      stop(): void;
      render(position: any): void;
      /**
       * 创建一些锚点
       */
      buildAnchor(): void;
      tr: import("konva/lib/shapes/Transformer").Transformer;
  }
  import Shape from "bimwin-api/components/Annotation/shape.js";
  import CloudRect from "bimwin-api/components/Annotation/CustomShape/cloudRect.js";

}
declare module 'bimwin-api/components/Annotation/CustomShape/cloudRect' {
  export default class CloudRect extends Shape<import("konva/lib/Shape.js").ShapeConfig> {
      constructor(props: any);
      props: any;
      _hitFunc(context: any): void;
      _sceneFunc(context: any): void;
  }
  import { Shape } from "konva/lib/Shape.js";

}
declare module 'bimwin-api/components/Annotation/CustomShape/xShape' {
  export default class XShape extends Shape<import("konva/lib/Shape.js").ShapeConfig> {
      constructor(props: any);
      props: any;
      _hitFunc(context: any): void;
      _sceneFunc(context: any): void;
  }
  import { Shape } from "konva/lib/Shape.js";

}
declare module 'bimwin-api/components/Annotation/ellipse' {
  export default class Ellipse extends Shape {
      constructor(layer: any, stage: any, config: any);
      layer: any;
      stage: any;
      config: any;
      id: string;
      name: string;
      callback: any;
      /**
       * 开始绘制
       */
      active(callback: any): void;
      isdraw: boolean;
      isPaint: boolean;
      pos: any;
      /**
       * 停止绘制
       */
      stop(): void;
      render(position: any): void;
      instance: import("konva/lib/shapes/Ellipse").Ellipse;
      /**
       * 创建一些锚点
       */
      buildAnchor(): void;
      tr: import("konva/lib/shapes/Transformer").Transformer;
  }
  import Shape from "bimwin-api/components/Annotation/shape.js";

}
declare module 'bimwin-api/components/Annotation/freeDraw' {
  export default class FreeDraw extends Shape {
      constructor(layer: any, stage: any, config: any);
      layer: any;
      stage: any;
      config: any;
      id: string;
      points: any[];
      name: string;
      initpos: any;
      callback: any;
      /**
       * 开始绘制
       */
      active(callback: any): void;
      isDraw: boolean;
      isPaint: boolean;
      pos: any;
      /**
       * 停止绘制
       */
      stop(): void;
      render(position: any): void;
      instance: import("konva/lib/shapes/Line").Line<{
          x: any;
          y: any;
          points: any[];
          fill: any;
          stroke: any;
          strokeWidth: any;
          hitStrokeWidth: any;
          lineCap: "round";
          lineJoin: "round";
          name: string;
          id: string;
          draggable: true;
          strokeScaleEnabled: false;
      }>;
      /**
       * 创建一些锚点
       */
      buildAnchor(): void;
      tr: import("konva/lib/shapes/Transformer").Transformer;
  }
  import Shape from "bimwin-api/components/Annotation/shape.js";

}
declare module 'bimwin-api/components/Annotation/line' {
  export default class Line extends Shape {
      constructor(layer: any, stage: any, config: any);
      layer: any;
      stage: any;
      config: any;
      id: string;
      points: any[];
      anchors: any[];
      zIndex: number;
      index: number;
      name: string;
      callback: any;
      showTransformer: boolean;
      tip: any;
      adjustTipPosition(e: any): void;
      /**
       * 开始绘制
       */
      active(callback: any): void;
      isDraw: boolean;
      isPaint: boolean;
      pos: any;
      /**
       * 停止绘制
       */
      stop(): void;
      render(position: any): void;
      instance: import("konva/lib/shapes/Line").Line<{
          x: any;
          y: any;
          points: any[];
          fill: any;
          stroke: any;
          strokeWidth: any;
          hitStrokeWidth: any;
          lineCap: "round";
          lineJoin: "round";
          name: string;
          id: string;
          strokeScaleEnabled: false;
      }>;
      /**
       * 创建一些锚点
       */
      buildAnchor(): void;
      tr: import("konva/lib/shapes/Transformer").Transformer;
  }
  import Shape from "bimwin-api/components/Annotation/shape.js";

}
declare module 'bimwin-api/components/Annotation/rect' {
  export default class Rect extends Shape {
      constructor(layer: any, stage: any, config: any);
      layer: any;
      stage: any;
      config: any;
      id: string;
      name: string;
      callback: any;
      /**
       * 开始绘制
       */
      active(callback: any): void;
      isdraw: boolean;
      isPaint: boolean;
      pos: any;
      /**
       * 停止绘制
       */
      stop(): void;
      render(position: any): void;
      instance: import("konva/lib/shapes/Rect").Rect;
      /**
       * 创建一些锚点
       */
      buildAnchor(): void;
      tr: import("konva/lib/shapes/Transformer").Transformer;
  }
  import Shape from "bimwin-api/components/Annotation/shape.js";

}
declare module 'bimwin-api/components/Annotation/shape' {
  export default class Shape {
      isDestroy: boolean;
      /**
       * 摧毁
       */
      destroy(): void;
      toJson(): any;
  }

}
declare module 'bimwin-api/components/Annotation/text' {
  export default class Text extends Shape {
      constructor(layer: any, stage: any, config: any);
      layer: any;
      stage: any;
      config: any;
      id: string;
      points: any[];
      input: HTMLDivElement;
      name: string;
      /**
       * 开启绘制
       */
      active(name: any, callback: any): void;
      isDraw: boolean;
      pos: any;
      instance: import("konva/lib/shapes/Text").Text;
      /**
       * 停止绘制
       */
      stop(): boolean;
  }
  import Shape from "bimwin-api/components/Annotation/shape.js";

}
declare module 'bimwin-api/components/Annotation/x' {
  export default class X extends Shape {
      constructor(layer: any, stage: any, config: any);
      layer: any;
      stage: any;
      config: any;
      id: string;
      name: string;
      callback: any;
      /**
       * 开始绘制
       */
      active(callback: any): void;
      isdraw: boolean;
      isPaint: boolean;
      pos: any;
      /**
       * 停止绘制
       */
      stop(): void;
      render(position: any): void;
      instance: XShape;
      /**
       * 创建一些锚点
       */
      buildAnchor(): void;
      tr: import("konva/lib/shapes/Transformer").Transformer;
  }
  import Shape from "bimwin-api/components/Annotation/shape.js";
  import XShape from "bimwin-api/components/Annotation/CustomShape/xShape.js";

}
declare module 'bimwin-api' {
  import main = require('bimwin-api/api/index');
  export = main;
}