declare module "three" {
  export class Vector2 {
    constructor(x?: number, y?: number);
    set(x: number, y: number): this;
    x: number;
    y: number;
  }
}

declare module "three/examples/jsm/postprocessing/UnrealBloomPass.js" {
  import { Vector2 } from "three";
  export class UnrealBloomPass {
    constructor(resolution: Vector2, strength: number, radius: number, threshold: number);
    strength: number;
    radius: number;
    threshold: number;
  }
}

declare module "three/examples/jsm/postprocessing/ShaderPass.js" {
  export class ShaderPass {
    constructor(shader: any);
    uniforms: Record<string, { value: any }>;
  }
}

declare module "three/examples/jsm/renderers/CSS2DRenderer.js" {
  export class CSS2DRenderer {
    constructor();
    setSize(width: number, height: number): void;
    domElement: HTMLElement;
    render(scene: any, camera: any): void;
  }
  export class CSS2DObject {
    constructor(element: HTMLElement);
    position: { set(x: number, y: number, z: number): void };
    center: { set(x: number, y: number): void };
    layers: { set(n: number): void };
  }
}
