import EventEmitter from './EventEmitter.js'; import { Clock } from 'three'; import { Assets } from './Assets.js'; import { type Optional } from '../helpers/typeHelper.js'; import { type IViewer, type SpeckleView, type SunLightConfiguration, UpdateFlags, ViewerEvent, type ViewerParams, type ViewerEventPayload } from '../IViewer.js'; import { World } from './World.js'; import { WorldTree } from './tree/WorldTree.js'; import SpeckleRenderer from './SpeckleRenderer.js'; import { type PropertyInfo, PropertyManager } from './filtering/PropertyManager.js'; import type { Query, QueryArgsResultMap } from './queries/Query.js'; import { type Utils } from './Utils.js'; import { Extension } from './extensions/Extension.js'; import Input from './input/Input.js'; import { Loader } from './loaders/Loader.js'; import { type Constructor } from 'type-fest'; import Stats from './three/stats.js'; export declare class Viewer extends EventEmitter implements IViewer { /** Container and optional stats element */ protected container: HTMLElement; protected stats: Optional>; /** Viewer params used at init time */ protected startupParams: ViewerParams; /** Viewer components */ protected tree: WorldTree; protected world: World; static readonly theAssets: Assets; speckleRenderer: SpeckleRenderer; protected propertyManager: PropertyManager; /** Misc members */ protected clock: Clock; protected loaders: { [id: string]: Loader; }; protected extensions: { [id: string]: Extension; }; /** various utils/helpers */ protected utils: Utils | undefined; /** Gets the World object. Currently it's used for info mostly */ get World(): World; get Utils(): Utils; get input(): Input; get params(): ViewerParams; private getConstructorChain; createExtension(type: Constructor): T; getExtension(type: Constructor): T; hasExtension(type: Constructor): boolean; private getExtensionInternal; constructor(container: HTMLElement, params?: ViewerParams); getContainer(): HTMLElement; getCanvas(): HTMLCanvasElement; getRenderer(): SpeckleRenderer; resize(): void; requestRender(flags?: UpdateFlags): void; protected frame(): void; protected update(): void; protected render(): void; init(): Promise; on(eventType: T, listener: (arg: ViewerEventPayload[T]) => void): void; getObjectProperties(resourceURL?: string | null, bypassCache?: boolean): Promise; getDataTree(): void; getWorldTree(): WorldTree; query(query: T): QueryArgsResultMap[T['operation']] | null; setLightConfiguration(config: SunLightConfiguration): void; getViews(): SpeckleView[]; screenshot(): Promise; /** * OBJECT LOADING/UNLOADING */ loadObject(loader: Loader, zoomToObject?: boolean): Promise; cancelLoad(resource: string, unload?: boolean): Promise; unloadObject(resource: string): Promise; unloadAll(): Promise; dispose(): void; }