/**
 * @module vim-loader/materials
 */
import * as THREE from 'three';
import { StandardMaterial } from './standardMaterial';
import { OutlineMaterial } from './outlineMaterial';
import { Settings } from '../../vim-webgl-viewer/viewerSettings';
import { MergeMaterial } from './mergeMaterial';
/**
 * Defines the materials to be used by the vim loader and allows for material injection.
 */
export declare class ViewerMaterials {
    static instance: ViewerMaterials;
    static createInstance(instance: ViewerMaterials): void;
    static getInstance(): ViewerMaterials;
    /**
     * Material used for opaque model geometry.
     */
    opaque: StandardMaterial;
    /**
     * Material used for transparent model geometry.
     */
    transparent: StandardMaterial;
    /**
     * Material used for maximum performance.
     */
    simple: THREE.Material;
    /**
     * Material used when creating wireframe geometry of the model.
     */
    wireframe: THREE.LineBasicMaterial;
    /**
     * Material used to show traces of hidden objects.
     */
    isolation: THREE.Material;
    /**
     * Material used to filter out what is not selected for selection outline effect.
     */
    mask: THREE.ShaderMaterial;
    /**
     * Material used for selection outline effect.
     */
    outline: OutlineMaterial;
    /**
     * Material used to merge outline effect with scene render.
     */
    merge: MergeMaterial;
    private _clippingPlanes;
    private _sectionStrokeWitdh;
    private _sectionStrokeFallof;
    private _sectionStrokeColor;
    private _focusIntensity;
    private _focusColor;
    private _onUpdate;
    constructor(opaque?: StandardMaterial, transparent?: StandardMaterial, simple?: THREE.Material, wireframe?: THREE.LineBasicMaterial, isolation?: THREE.Material, mask?: THREE.ShaderMaterial, outline?: OutlineMaterial, merge?: MergeMaterial);
    /**
     * Updates material settings based on the provided configuration.
     * @param {Settings} settings - The settings to apply to the materials.
     */
    applySettings(settings: Settings): void;
    /**
     * A signal dispatched whenever a material is modified.
     */
    get onUpdate(): import("ste-signals").ISignal;
    /**
     * Determines the opacity of the isolation material.
     */
    get isolationOpacity(): number;
    set isolationOpacity(opacity: number);
    /**
     * Determines the color of the isolation material.
     */
    get isolationColor(): THREE.Color;
    set isolationColor(color: THREE.Color);
    /**
    * Determines the color intensity of the highlight effect on mouse hover.
    */
    get focusIntensity(): number;
    set focusIntensity(value: number);
    /**
     * Determines the color of the highlight effect on mouse hover.
     */
    get focusColor(): THREE.Color;
    set focusColor(value: THREE.Color);
    /**
     * Determines the color of wireframe meshes.
     */
    get wireframeColor(): THREE.Color;
    set wireframeColor(value: THREE.Color);
    /**
     * Determines the opacity of wireframe meshes.
     */
    get wireframeOpacity(): number;
    set wireframeOpacity(value: number);
    /**
     * The clipping planes applied to all relevent materials
     */
    get clippingPlanes(): THREE.Plane[] | undefined;
    set clippingPlanes(value: THREE.Plane[] | undefined);
    /**
     * The width of the stroke effect where the section box intersects the model.
     */
    get sectionStrokeWitdh(): number;
    set sectionStrokeWitdh(value: number);
    /**
     * Gradient of the stroke effect where the section box intersects the model.
     */
    get sectionStrokeFallof(): number;
    set sectionStrokeFallof(value: number);
    /**
     * Color of the stroke effect where the section box intersects the model.
     */
    get sectionStrokeColor(): THREE.Color;
    set sectionStrokeColor(value: THREE.Color);
    /**
     * Color of the selection outline effect.
     */
    get outlineColor(): THREE.Color;
    set outlineColor(value: THREE.Color);
    /**
     * Size of the blur convolution on the selection outline effect.
     */
    get outlineBlur(): number;
    set outlineBlur(value: number);
    /**
     * Gradient of the the selection outline effect.
     */
    get outlineFalloff(): number;
    set outlineFalloff(value: number);
    /**
     * Intensity of the the selection outline effect.
     */
    get outlineIntensity(): number;
    set outlineIntensity(value: number);
    /** dispose all materials. */
    dispose(): void;
}
/**
 * Creates a new instance of the default wireframe material.
 * @returns {THREE.LineBasicMaterial} A new instance of LineBasicMaterial.
 */
export declare function createWireframe(): THREE.LineBasicMaterial;
