import { Material, WebGLProgramParametersWithUniforms, WebGLRenderer } from 'three';
import { MaterialExtension } from '../../materials';
import { IMaterial, IMaterialSetDirtyOptions } from '../IMaterial';
import { ITexture } from '../ITexture';
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;
        blendColor: string;
        blendAlpha: number;
        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;
        allowOverride: boolean;
        visible: boolean;
        toneMapped: boolean;
        userData: {};
        alphaTest: number;
        alphaHash: boolean;
    };
    readonly threeMaterialInterpolateProps: string[];
    readonly setDirty: (this: IMaterial, options?: IMaterialSetDirtyOptions) => void;
    /** @ignore */
    readonly setValues: (superSetValues: Material["setValues"]) => IMaterial["setValues"];
    /** @ignore */
    readonly dispose: (superDispose: Material["dispose"]) => IMaterial["dispose"];
    /** @ignore */
    readonly clone: (superClone: Material["clone"]) => IMaterial["clone"];
    /** @ignore */
    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: WebGLProgramParametersWithUniforms, renderer: WebGLRenderer) => void;
    /** @ignore */
    readonly onBeforeRender: IMaterial["onBeforeRender"];
    /** @ignore */
    readonly onAfterRender: IMaterial["onAfterRender"];
    /** @ignore */
    readonly onBeforeCompileOverride: (superOnBeforeCompile: Material["onBeforeCompile"]) => IMaterial["onBeforeCompile"];
    /** @ignore */
    readonly onBeforeRenderOverride: (superOnBeforeRender: Material["onBeforeRender"]) => IMaterial["onBeforeRender"];
    /** @ignore */
    readonly onAfterRenderOverride: (superOnAfterRender: Material["onAfterRender"]) => IMaterial["onAfterRender"];
    /** @ignore */
    readonly customProgramCacheKeyOverride: (superCustomPropertyCacheKey: Material["customProgramCacheKey"]) => IMaterial["customProgramCacheKey"];
    readonly upgradeMaterial: typeof upgradeMaterial;
    readonly getMapsForMaterial: (this: IMaterial) => Map<string, ITexture<import('three').TextureEventMap>>;
    readonly refreshTextureRefs: (this: IMaterial) => void;
};
export declare const materialTextureProperties: Set<string>;
export declare const materialTexturePropertiesUserData: Set<string>;
/**
 * Convert a standard three.js {@link Material} to {@link IMaterial}
 */
export declare function upgradeMaterial(this: IMaterial): IMaterial;
//# sourceMappingURL=../../src/core/material/iMaterialCommons.d.ts.map