import {
	Object3D,
	Vector2,
	Scene,
	Camera
} from 'three';

export class CSS2DObject extends Object3D {

	constructor( element?: HTMLElement );

	readonly isCSS2DObject: true;
	element: HTMLElement;
	center: Vector2;

	onBeforeRender: ( renderer: unknown, scene: Scene, camera: Camera ) => void;
	onAfterRender: ( renderer: unknown, scene: Scene, camera: Camera ) => void;

	copy( source: CSS2DObject, recursive?: boolean ): this;

}

export interface CSS2DRendererParameters {
	element?: HTMLElement;
}

export class CSS2DRenderer {

	constructor( parameters?: CSS2DRendererParameters );
	domElement: HTMLElement;
	sortObjects: boolean;

	getSize(): { width: number, height: number };
	setSize( width: number, height: number ): void;
	render( scene: Scene, camera: Camera ): void;

}
