declare module "three" { export class Object3D { add(...objects: Object3D[]): this; position: Vector3; rotation: Euler; scale: Vector3; visible: boolean; userData: Record; [key: string]: any; } export class Vector3 { constructor(x?: number, y?: number, z?: number); x: number; y: number; z: number; set(x: number, y: number, z: number): this; [key: string]: any; } export class Euler { constructor(x?: number, y?: number, z?: number, order?: string); x: number; y: number; z: number; [key: string]: any; } export class Mesh extends Object3D { constructor(geometry?: BufferGeometry, material?: Material); geometry: BufferGeometry; material: Material; } export class Group extends Object3D {} export class Sprite extends Object3D { constructor(material?: SpriteMaterial); material: SpriteMaterial; } export class SphereGeometry extends BufferGeometry { constructor(radius?: number, widthSegments?: number, heightSegments?: number); } export class RingGeometry extends BufferGeometry { constructor(innerRadius?: number, outerRadius?: number, thetaSegments?: number); } export class BufferGeometry { dispose(): void; [key: string]: any; } export class Material { dispose(): void; transparent: boolean; opacity: number; [key: string]: any; } export class MeshBasicMaterial extends Material { constructor(params?: Record); color: Color; } export class MeshLambertMaterial extends Material { constructor(params?: Record); color: Color; } export class SpriteMaterial extends Material { constructor(params?: Record); map: Texture | null; } export class Color { constructor(color?: string | number); set(color: string | number): this; [key: string]: any; } export class Texture { needsUpdate: boolean; dispose(): void; [key: string]: any; } export class CanvasTexture extends Texture { constructor(canvas: HTMLCanvasElement); } export class TextureLoader { load(url: string, onLoad?: (tex: Texture) => void): Texture; } export default Object3D; }