export type DiscoBallRendererOptions = { ambient: number; clarity: number; distortion: number; fillStrength: number; fillX: number; fillY: number; fillZ: number; fps: number; keyStrength: number; keyX: number; keyY: number; keyZ: number; lightIntensity: number; maxDevicePixelRatio: number; reflectionCount: number; reflectionSize: number; reflectionSpread: number; reflectionStrength: number; reflectionTint: number; rim1Sharpness: number; rim1Strength: number; rim1X: number; rim1Y: number; rim2Sharpness: number; rim2Strength: number; rim2X: number; rim2Y: number; segments: number; shininess: number; showHelpers: boolean; showReflections: boolean; size: number; sparkleCount: number; sparkleSize: number; sparkleSpeed: number; sparkleStrength: number; specular: number; speed: number; targetX: number; targetY: number; tint: string; tintStrength: number; topStrength: number; topX: number; topY: number; topZ: number; webcam: boolean; zoom: number; }; export type DiscoBallRendererOptionInput = Partial; export declare const DEFAULT_DISCO_BALL_RENDERER_OPTIONS: { ambient: number; clarity: number; distortion: number; fillStrength: number; fillX: number; fillY: number; fillZ: number; fps: number; keyStrength: number; keyX: number; keyY: number; keyZ: number; lightIntensity: number; maxDevicePixelRatio: number; reflectionCount: number; reflectionSize: number; reflectionSpread: number; reflectionStrength: number; reflectionTint: number; rim1Sharpness: number; rim1Strength: number; rim1X: number; rim1Y: number; rim2Sharpness: number; rim2Strength: number; rim2X: number; rim2Y: number; segments: number; shininess: number; showHelpers: false; showReflections: true; size: number; sparkleCount: number; sparkleSize: number; sparkleSpeed: number; sparkleStrength: number; specular: number; speed: number; targetX: number; targetY: number; tint: string; tintStrength: number; topStrength: number; topX: number; topY: number; topZ: number; webcam: false; zoom: number; }; export declare const normalizeDiscoBallRendererOptions: ({ ambient, clarity, distortion, fillStrength, fillX, fillY, fillZ, fps, keyStrength, keyX, keyY, keyZ, lightIntensity, maxDevicePixelRatio, reflectionCount, reflectionSize, reflectionSpread, reflectionStrength, reflectionTint, rim1Sharpness, rim1Strength, rim1X, rim1Y, rim2Sharpness, rim2Strength, rim2X, rim2Y, segments, shininess, showHelpers, showReflections, size, sparkleCount, sparkleSize, sparkleSpeed, sparkleStrength, specular, speed, targetX, targetY, tint, tintStrength, topStrength, topX, topY, topZ, webcam, zoom, }?: DiscoBallRendererOptionInput) => DiscoBallRendererOptions; export declare class DiscoBallRenderer { private active; private ball; private ballGroup; private ballMaterial; private ballRotation; private cachedVisibleHeight; private camera; private canvas; private cord; private cordMaterial; private dirtyHelpers; private dirtyReflectionCount; private dirtySize; private dirtySparkleCount; private dirtyUniforms; private disposed; private elapsed; private frameDuration; private helpersInScene; private hostHeight; private lastFrameTime; private lightHelpers; private options; private paused; private rafId; private reflectionTexture; private reflections; private renderer; private scene; private sparkleTexture; private sparkles; private tintColor; private tween; private video; private videoTexture; private visibility; private webcamReady; private webcamStream; static create(canvas: HTMLCanvasElement, options: DiscoBallRendererOptions): DiscoBallRenderer | null; private constructor(); destroy(): void; pause(): void; play(): void; resize(): void; setActive(active: boolean): void; setPaused(paused: boolean): void; updateOptions(options: DiscoBallRendererOptions): void; private createBallMaterial; private initLightHelpers; private clearSpriteArray; private initSparkles; private pickReflectionTiles; private initReflections; private updateReflections; private applyUniforms; private updateSparkles; private updateBallSize; private updateHelpers; private updateHelperPositions; private startWebcam; private stopWebcam; private startTween; private updateTween; private applySceneVisibility; private processDirtyFlags; private scheduleLoop; private loop; private pxToWorld; private targetToWorld; }