import { WebGLRenderer } from "three";
import type { ViralViewerApi } from "../../viral-viewer-api";
import { PostProcessingRenderer } from "../post-processing/post-processing-renderer";
import { PerformanceMetrics } from "../telemetry/performance-metrics";
export declare class ViralRenderer {
    viralViewerApi: ViralViewerApi;
    renderer: WebGLRenderer;
    postProcessingRenderer?: PostProcessingRenderer;
    performanceMetrics: PerformanceMetrics;
    private _t;
    private _lastSpatialStatsTime;
    private static readonly _tempFrustum;
    private static readonly _tempProjMatrix;
    private static readonly _tempSphere;
    private static readonly _tempBox;
    private static readonly _tempCenter;
    constructor(viralViewerApi: ViralViewerApi);
    updateSize(width: number, height: number): void;
    private renderTimeout;
    render(): void;
    private performRender;
    accumulateTAAFrames(sampleFrames?: number): void;
    /**
     * Log standard WebGL render statistics including frustum culling info
     */
    private logRenderStats;
    /**
     * Compute how many mesh objects are inside the camera frustum
     */
    private computeFrustumStats;
    /**
     * Get detailed rendering performance info
     */
    getPerformanceInfo(): {
        rendering: {
            calls: number;
            triangles: number;
            points: number;
            lines: number;
        };
        memory: {
            geometries: number;
            textures: number;
        };
    };
    /**
     * Enable/disable performance logging
     */
    setPerformanceLogging(enabled: boolean, interval?: number): void;
    private jitterOffsets;
    private jitterIndex;
    private size;
    private samples;
    applyJitter(): void;
    generateJitterOffsets(samples?: number): number[][];
    screenshot(): string;
}
