import EventEmitter from 'events';

declare interface CadCadManagerType extends EventEmitter {
  edit: {
    enter: Fn;
    exit: Fn;
  };
}
declare interface TourManagerType extends EventEmitter {
  load: Fn<any[]>;
}
declare interface RemoteEditorType extends EventEmitter {
  tour_delete: ({ num: string }) => Promise<void>;
}

declare interface KanKanInstance extends EventEmitter {
  [x: string]: any;
  CadCadManager: CadCadManagerType;
  TourManager: TourManagerType;
  remote_editor: RemoteEditorType;
}

declare interface KankanMetaDataType {
  num: string;
  floorLogo: string;
  floorLogoSize: number;
  floorLogoFile: string;
  music: string;
  musicFile: string;
  scenePassword: string;
  title: string;
  description: string;
  controls: {
    showMap: number;
    showLock: number;
    showTitle: number;
    showPanorama: number;
    showDollhouse: number;
    showFloorplan: number;
    showVR: number;
    showTour: number;
    showRule: number;
  };
  createTime: string;
  version: number;
  imgVersion: number;
  linkVersion: number;
  floorPlanUser: number;
  entry: any;
  sceneResolution: string;
  sceneFrom: string;
  sceneKind: string;
  boxPhotos: string;
  boxModels: string;
  videos: {
    data: [{ blend_fov: string; id: string; value: string }];
    upPath: string;
    version: number;
  };
  tags: number;
  loadingLogo: string;
  loadingLogoFile: string;
  dataSync: any;
  floorPlanAngle: number;
  floorPlanCompass: number;
  floorPlanUpload: any;
  tours: number;
  mosaic: number;
  mosaicList: [];
  waterMark: any;
  links: number;
  filters: number;
  roiFilter: any;
  surveillances: number;
}
