import { type Material, MeshPhongMaterial, MeshStandardMaterial } from "three";
import { LineMaterial } from "three/examples/jsm/lines/LineMaterial";
import type { ViralViewerApi } from "../../viral-viewer-api";
export declare class ViralMaterialManager {
    private viralViewerApi;
    hoverMaterial: MeshPhongMaterial;
    selectedMaterial: MeshPhongMaterial;
    edgeMaterial: LineMaterial;
    outlineMaterial: MeshStandardMaterial;
    materials: Material[];
    mergeMaterials: Material[];
    private originalColors;
    constructor(viralViewerApi: ViralViewerApi);
    /**
     * Checks if a material has a color property.
     */
    private hasColorProperty;
    /**
     * Turns all materials to white, storing original colors if not already stored.
     */
    turnAllWhite(): void;
    /**
     * Resets all materials to their original colors.
     */
    resetToOriginal(): void;
    /**
     * Dispose all materials held by this manager.
     * Three.js Material.dispose() releases GPU shader programs.
     */
    dispose(): void;
}
