import { Material, Shader, WebGLRenderer } from 'three';
import { MaterialExtension } from '../../materials';
import { IMaterial, IMaterialSetDirtyOptions } from '../IMaterial';
/**
 * Map of all material properties and their default values in three.js - Material.js
 * This is used to copy properties and serialize/deserialize them.
 * @note: Upgrade note: keep updated from three.js/src/Material.js:22
 */
export declare const threeMaterialPropList: {
    name: string;
    blending: 1;
    side: 0;
    vertexColors: boolean;
    opacity: number;
    transparent: boolean;
    blendSrc: 204;
    blendDst: 205;
    blendEquation: 100;
    blendSrcAlpha: null;
    blendDstAlpha: null;
    blendEquationAlpha: null;
    depthFunc: 3;
    depthTest: boolean;
    depthWrite: boolean;
    stencilWriteMask: number;
    stencilFunc: 519;
    stencilRef: number;
    stencilFuncMask: number;
    stencilFail: 7680;
    stencilZFail: 7680;
    stencilZPass: 7680;
    stencilWrite: boolean;
    clippingPlanes: null;
    clipIntersection: boolean;
    clipShadows: boolean;
    shadowSide: null;
    colorWrite: boolean;
    precision: null;
    polygonOffset: boolean;
    polygonOffsetFactor: number;
    polygonOffsetUnits: number;
    dithering: boolean;
    alphaToCoverage: boolean;
    premultipliedAlpha: boolean;
    forceSinglePass: boolean;
    visible: boolean;
    toneMapped: boolean;
    userData: {};
    alphaTest: number;
};
export declare const iMaterialCommons: {
    readonly threeMaterialPropList: {
        name: string;
        blending: 1;
        side: 0;
        vertexColors: boolean;
        opacity: number;
        transparent: boolean;
        blendSrc: 204;
        blendDst: 205;
        blendEquation: 100;
        blendSrcAlpha: null;
        blendDstAlpha: null;
        blendEquationAlpha: null;
        depthFunc: 3;
        depthTest: boolean;
        depthWrite: boolean;
        stencilWriteMask: number;
        stencilFunc: 519;
        stencilRef: number;
        stencilFuncMask: number;
        stencilFail: 7680;
        stencilZFail: 7680;
        stencilZPass: 7680;
        stencilWrite: boolean;
        clippingPlanes: null;
        clipIntersection: boolean;
        clipShadows: boolean;
        shadowSide: null;
        colorWrite: boolean;
        precision: null;
        polygonOffset: boolean;
        polygonOffsetFactor: number;
        polygonOffsetUnits: number;
        dithering: boolean;
        alphaToCoverage: boolean;
        premultipliedAlpha: boolean;
        forceSinglePass: boolean;
        visible: boolean;
        toneMapped: boolean;
        userData: {};
        alphaTest: number;
    };
    readonly setDirty: (this: IMaterial, options?: IMaterialSetDirtyOptions) => void;
    readonly setValues: (superSetValues: Material["setValues"]) => IMaterial["setValues"];
    readonly dispose: (superDispose: Material<any, any>["dispose"]) => IMaterial["dispose"];
    readonly clone: (superClone: Material<any, any>["clone"]) => IMaterial["clone"];
    readonly dispatchEvent: (superDispatchEvent: Material["dispatchEvent"]) => IMaterial["dispatchEvent"];
    readonly customProgramCacheKey: (this: IMaterial) => string;
    readonly registerMaterialExtensions: (this: IMaterial, customMaterialExtensions: MaterialExtension[]) => void;
    readonly unregisterMaterialExtensions: (this: IMaterial, customMaterialExtensions: MaterialExtension[]) => void;
    readonly onBeforeCompile: (this: IMaterial, shader: Shader, renderer: WebGLRenderer) => void;
    readonly onBeforeRender: IMaterial["onBeforeRender"];
    readonly onAfterRender: IMaterial["onAfterRender"];
    readonly onBeforeCompileOverride: (superOnBeforeCompile: Material["onBeforeCompile"]) => IMaterial["onBeforeCompile"];
    readonly onBeforeRenderOverride: (superOnBeforeRender: Material["onBeforeRender"]) => IMaterial["onBeforeRender"];
    readonly onAfterRenderOverride: (superOnAfterRender: Material["onAfterRender"]) => IMaterial["onAfterRender"];
    readonly customProgramCacheKeyOverride: (superCustomPropertyCacheKey: Material["customProgramCacheKey"]) => IMaterial["customProgramCacheKey"];
    readonly upgradeMaterial: typeof upgradeMaterial;
};
/**
 * Convert a standard three.js {@link Material} to {@link IMaterial}
 */
export declare function upgradeMaterial(this: IMaterial): IMaterial;
//# sourceMappingURL=iMaterialCommons.d.ts.map