import type { ViralViewerApi } from "../../viral-viewer-api";
interface RenderableInfo {
    id: number;
    name: string;
    type: string;
    visible: boolean;
    parent: string;
    path: string;
    vertices: number;
    triangles: number;
    drawCalls: number;
    children: number;
    materialType: string;
    isDuplicate?: boolean;
    duplicateOf?: number;
    isContainer?: boolean;
}
interface RenderPassInfo {
    name: string;
    enabled: boolean;
    estimatedPasses: number;
}
interface SceneAnalysis {
    totalObjects: number;
    visibleObjects: number;
    totalDrawCalls: number;
    totalTriangles: number;
    totalVertices: number;
    renderPasses: RenderPassInfo[];
    estimatedTotalPasses: number;
    singlePassDrawCalls: number;
    expectedTotalDrawCalls: number;
    batchedMeshes: RenderableInfo[];
    instancedMeshes: RenderableInfo[];
    regularMeshes: RenderableInfo[];
    edgeMeshes: RenderableInfo[];
    otherObjects: RenderableInfo[];
    potentialDuplicates: {
        object1: RenderableInfo;
        object2: RenderableInfo;
        reason: string;
    }[];
    warnings: string[];
}
export declare class ViralRenderDebugPanel {
    viralViewerApi: ViralViewerApi;
    private panel;
    private contentContainer;
    private isVisible;
    private lastAnalysis;
    constructor(viralViewerApi: ViralViewerApi);
    private inject;
    private createButton;
    private injectStyles;
    private attachEventListeners;
    show(): void;
    hide(): void;
    toggle(): void;
    /**
     * Main analysis function - traverses entire scene
     */
    analyzeScene(): SceneAnalysis;
    /**
     * Analyze post-processing render passes
     */
    private analyzeRenderPasses;
    private extractObjectInfo;
    private isRenderable;
    private isVisibleInHierarchy;
    private getGeometryHash;
    private categorizeObject;
    private analyzeMergedModel;
    private analyzeAndRender;
    private renderAnalysis;
    private createSection;
    private createCollapsibleSection;
    private highlightObject;
    logToConsole(): void;
    private logObjectTree;
    private exportJSON;
    dispose(): void;
}
export {};
