import { Color, Material, Texture } from 'three';
import { GeometryType } from '../batching/Batch';
import { TreeNode } from '../tree/WorldTree';
import { DisplayStyle, NodeRenderView, RenderMaterial } from '../tree/NodeRenderView';
import { FilterMaterial, FilterMaterialType } from '../filtering/FilteringManager';
export interface MaterialOptions {
    rampIndex?: number;
    rampIndexColor?: Color;
    rampTexture?: Texture;
    rampWidth?: number;
    needsCopy?: boolean;
}
export default class Materials {
    static readonly UNIFORM_VECTORS_USED = 33;
    private readonly materialMap;
    private meshHighlightMaterial;
    private meshTransparentHighlightMaterial;
    private meshGhostMaterial;
    private meshGradientMaterial;
    private meshTransparentGradientMaterial;
    private meshColoredMaterial;
    private meshTransparentColoredMaterial;
    private meshHiddenMaterial;
    private meshOverlayMaterial;
    private meshTransparentOverlayMaterial;
    private lineHighlightMaterial;
    private lineGhostMaterial;
    private lineColoredMaterial;
    private lineHiddenMaterial;
    private lineOverlayMaterial;
    private pointCloudHighlightMaterial;
    private pointHighlightMaterial;
    private pointGhostMaterial;
    private pointOverlayMaterial;
    private pointCloudOverlayMaterial;
    private pointCloudColouredMaterial;
    private pointCloudGradientMaterial;
    private textHighlightMaterial;
    private textGhostMaterial;
    private textColoredMaterial;
    private textOverlayMaterial;
    private textHiddenMaterial;
    private defaultGradientTextureData;
    static renderMaterialFromNode(materialNode: TreeNode, geometryNode: TreeNode): RenderMaterial;
    static displayStyleFromNode(node: TreeNode): DisplayStyle;
    static fastCopy(from: Material, to: Material): void;
    static isTransparent(material: Material): boolean;
    static isOpaque(material: Material): boolean;
    private createDefaultMeshMaterials;
    private createLineDefaultMaterials;
    private createDefaultPointMaterials;
    private createDefaultTextMaterials;
    private createDefaultNullMaterials;
    createDefaultMaterials(): Promise<void>;
    private makeMeshMaterial;
    private makeLineMaterial;
    private makePointMaterial;
    private makeTextMaterial;
    getMaterial(hash: number, material: RenderMaterial | DisplayStyle, type: GeometryType): Material;
    private getMeshMaterial;
    private getLineMaterial;
    private getPointMaterial;
    private getPointCloudMaterial;
    private getTextMaterial;
    getHighlightMaterial(renderView: NodeRenderView): Material;
    getGhostMaterial(renderView: NodeRenderView): Material;
    getGradientMaterial(renderView: NodeRenderView): Material;
    getColoredMaterial(renderView: NodeRenderView): Material;
    getOverlayMaterial(renderView: NodeRenderView): Material;
    getHiddenMaterial(renderView: NodeRenderView): Material;
    getDebugBatchMaterial(renderView: NodeRenderView): any;
    getFilterMaterial(renderView: NodeRenderView, filterMaterial: FilterMaterialType): Material;
    getFilterMaterialOptions(filterMaterial: FilterMaterial): MaterialOptions;
    purge(): void;
}
