/**
 * @module vim-loader/materials
 */
import * as THREE from 'three';
/**
 * Type alias for THREE uniforms
 */
export type ShaderUniforms = {
    [uniform: string]: THREE.IUniform<any>;
};
export declare function createOpaque(): StandardMaterial;
export declare function createTransparent(): StandardMaterial;
/**
 * Creates a new instance of the default loader opaque material.
 * @returns {THREE.MeshLambertMaterial} A new instance of MeshLambertMaterial with transparency.
 */
export declare function createBasicOpaque(): THREE.MeshLambertMaterial;
/**
 * Creates a new instance of the default loader transparent material.
 * @returns {THREE.MeshPhongMaterial} A new instance of MeshPhongMaterial with transparency.
 */
export declare function createBasicTransparent(): THREE.MeshLambertMaterial;
/**
 * Material used for both opaque and tranparent surfaces of a VIM model.
 */
export declare class StandardMaterial {
    material: THREE.Material;
    uniforms: ShaderUniforms | undefined;
    _focusIntensity: number;
    _focusColor: THREE.Color;
    _sectionStrokeWitdh: number;
    _sectionStrokeFallof: number;
    _sectionStrokeColor: THREE.Color;
    constructor(material: THREE.Material);
    get color(): THREE.Color;
    set color(color: THREE.Color);
    get focusIntensity(): number;
    set focusIntensity(value: number);
    get focusColor(): THREE.Color;
    set focusColor(value: THREE.Color);
    get sectionStrokeWitdh(): number;
    set sectionStrokeWitdh(value: number);
    get sectionStrokeFallof(): number;
    set sectionStrokeFallof(value: number);
    get sectionStrokeColor(): THREE.Color;
    set sectionStrokeColor(value: THREE.Color);
    get clippingPlanes(): THREE.Plane[] | null;
    set clippingPlanes(value: THREE.Plane[] | null);
    dispose(): void;
    /**
     * Patches phong shader to be able to control when lighting should be applied to resulting color.
     * Instanced meshes ignore light when InstanceColor is defined
     * Instanced meshes ignore vertex color when instance attribute useVertexColor is 0
     * Regular meshes ignore light in favor of vertex color when uv.y = 0
     */
    patchShader(material: THREE.Material): void;
}
