import type { MeshPhysicalMaterial } from 'three';
import type { Metalness, MaterialColor, Roughness, TextureMap, TextureFormat, TextureFiltering, TextureWrapping, TextureMapping, TextureRotation, TextureOffset, TextureRepeat, Reflectivity, IOR, Intensity, DisplacementScale, NormalScale, BumpScale, Sheen, SheenTint, SheenRoughness, Clearcoat, IScale, ClearcoatRoughness, Transmission, AlphaModeValue, OpacityValue, AlphaTestValue, InvertAlphaTexture, ISide, IScreenShot } from '../interface';
import { AlphaMode } from '../interface';
import { MaterialFunc } from './enums';
declare const setMaterial: {
    setMetalness: (material: MeshPhysicalMaterial, metalness: Metalness) => void;
    setRoughness: (material: MeshPhysicalMaterial, roughness: Roughness) => void;
    setColor: (material: MeshPhysicalMaterial, color: MaterialColor) => void;
    setMaterialMap: (material: MeshPhysicalMaterial, textureMap: TextureMap) => void;
    setMaterialTextureFormat: (material: MeshPhysicalMaterial, format: TextureFormat) => void;
    setMaterialTextureFiltering: (material: MeshPhysicalMaterial, textureFiltering: TextureFiltering) => void;
    setMaterialTextureWrapT: (material: MeshPhysicalMaterial, textureMapping: TextureWrapping) => void;
    setMaterialTextureWrapS: (material: MeshPhysicalMaterial, textureMapping: TextureWrapping) => void;
    setMaterialTextureMapping: (material: MeshPhysicalMaterial, textureMapping: TextureMapping) => void;
    setMaterialTextureRotation: (material: MeshPhysicalMaterial, textureRotation: TextureRotation) => void;
    setMaterialTextureOffset: (material: MeshPhysicalMaterial, textureOffset: TextureOffset) => void;
    setMaterialTextureRepeat: (material: MeshPhysicalMaterial, textureRepeat: TextureRepeat) => void;
    setReflectivity: (material: MeshPhysicalMaterial, reflectivity: Reflectivity) => void;
    setIOR(material: MeshPhysicalMaterial, value: IOR): void;
    setEnvMapIntensity(material: MeshPhysicalMaterial, value: Intensity): void;
    setAoIntensity(material: MeshPhysicalMaterial, value: Intensity): void;
    setDisplacementScale(material: MeshPhysicalMaterial, value: DisplacementScale): void;
    setNormalScale(material: MeshPhysicalMaterial, value: NormalScale): void;
    setBumpScale(material: MeshPhysicalMaterial, value: BumpScale): void;
    setSheen(material: MeshPhysicalMaterial, value: Sheen): void;
    setMaterialSheenTint(material: MeshPhysicalMaterial, value: SheenTint): void;
    setMaterialSheenRoughness(material: MeshPhysicalMaterial, value: SheenRoughness): void;
    setClearcoat(material: MeshPhysicalMaterial, value: Clearcoat): void;
    setClearcoatNormal(material: MeshPhysicalMaterial, value: IScale): void;
    setClearcoatRoughness(material: MeshPhysicalMaterial, value: ClearcoatRoughness): void;
    setTransmission(material: MeshPhysicalMaterial, value: Transmission): void;
    setAlphaMode(material: MeshPhysicalMaterial, alphaModeValue: AlphaModeValue): void;
    setOpacity(material: MeshPhysicalMaterial, value: OpacityValue): void;
    setAlphaTest(material: MeshPhysicalMaterial, value: AlphaTestValue): void;
    invertAlphaTexture(material: MeshPhysicalMaterial, value: InvertAlphaTexture): void;
    setEmissiveIntensity(material: MeshPhysicalMaterial, value: Intensity): void;
    setEmissive: (material: MeshPhysicalMaterial, color: MaterialColor) => void;
    setSide: (material: MeshPhysicalMaterial, value: ISide) => void;
    setSpecularIntensity: (material: MeshPhysicalMaterial, value: Intensity) => void;
    setSpecularColor: (material: MeshPhysicalMaterial, color: MaterialColor) => void;
    exportScene: (material: MeshPhysicalMaterial) => Promise<{
        type: string;
        side: import("three").Side;
        depthWrite: boolean;
        transparent: boolean;
        color: string;
        map: {
            url: string;
            format: number;
            minFilter: number;
            magFilter: number;
            wrapS: number;
            wrapT: number;
            rotation: number;
            offset: number[] | null;
            repeat: number[] | null;
            userData?: any;
        } | undefined;
        roughness: number;
        roughnessMap: {
            url: string;
            format: number;
            minFilter: number;
            magFilter: number;
            wrapS: number;
            wrapT: number;
            rotation: number;
            offset: number[] | null;
            repeat: number[] | null;
            userData?: any;
        } | undefined;
        metalness: number;
        metalnessMap: {
            url: string;
            format: number;
            minFilter: number;
            magFilter: number;
            wrapS: number;
            wrapT: number;
            rotation: number;
            offset: number[] | null;
            repeat: number[] | null;
            userData?: any;
        } | undefined;
        opacity: number;
        alphaTest: number;
        alphaMap: {
            url: string;
            format: number;
            minFilter: number;
            magFilter: number;
            wrapS: number;
            wrapT: number;
            rotation: number;
            offset: number[] | null;
            repeat: number[] | null;
            userData?: any;
        } | undefined;
        aoMap: {
            url: string;
            format: number;
            minFilter: number;
            magFilter: number;
            wrapS: number;
            wrapT: number;
            rotation: number;
            offset: number[] | null;
            repeat: number[] | null;
            userData?: any;
        } | undefined;
        aoMapIntensity: number;
        bumpMap: {
            url: string;
            format: number;
            minFilter: number;
            magFilter: number;
            wrapS: number;
            wrapT: number;
            rotation: number;
            offset: number[] | null;
            repeat: number[] | null;
            userData?: any;
        } | undefined;
        bumpScale: number;
        normalMap: {
            url: string;
            format: number;
            minFilter: number;
            magFilter: number;
            wrapS: number;
            wrapT: number;
            rotation: number;
            offset: number[] | null;
            repeat: number[] | null;
            userData?: any;
        } | undefined;
        normalMapType: import("three").NormalMapTypes;
        normalScale: import("three").Vector2Tuple;
        displacementMap: {
            url: string;
            format: number;
            minFilter: number;
            magFilter: number;
            wrapS: number;
            wrapT: number;
            rotation: number;
            offset: number[] | null;
            repeat: number[] | null;
            userData?: any;
        } | undefined;
        displacementBias: number;
        displacementScale: number;
        emissive: string;
        emissiveMap: {
            url: string;
            format: number;
            minFilter: number;
            magFilter: number;
            wrapS: number;
            wrapT: number;
            rotation: number;
            offset: number[] | null;
            repeat: number[] | null;
            userData?: any;
        } | undefined;
        emissiveIntensity: number;
        envMapIntensity: number;
        clearcoat: number;
        clearcoatMap: {
            url: string;
            format: number;
            minFilter: number;
            magFilter: number;
            wrapS: number;
            wrapT: number;
            rotation: number;
            offset: number[] | null;
            repeat: number[] | null;
            userData?: any;
        } | undefined;
        clearcoatNormalMap: {
            url: string;
            format: number;
            minFilter: number;
            magFilter: number;
            wrapS: number;
            wrapT: number;
            rotation: number;
            offset: number[] | null;
            repeat: number[] | null;
            userData?: any;
        } | undefined;
        clearcoatNormalScale: import("three").Vector2Tuple;
        clearcoatRoughness: number;
        clearcoatRoughnessMap: {
            url: string;
            format: number;
            minFilter: number;
            magFilter: number;
            wrapS: number;
            wrapT: number;
            rotation: number;
            offset: number[] | null;
            repeat: number[] | null;
            userData?: any;
        } | undefined;
        ior: number;
        reflectivity: number;
        sheen: number;
        transmission: number;
        transmissionMap: {
            url: string;
            format: number;
            minFilter: number;
            magFilter: number;
            wrapS: number;
            wrapT: number;
            rotation: number;
            offset: number[] | null;
            repeat: number[] | null;
            userData?: any;
        } | undefined;
        specularIntensity: number;
        specularColor: string;
        specularColorMap: {
            url: string;
            format: number;
            minFilter: number;
            magFilter: number;
            wrapS: number;
            wrapT: number;
            rotation: number;
            offset: number[] | null;
            repeat: number[] | null;
            userData?: any;
        } | undefined;
        sheenColor: string;
        sheenColorMap: {
            url: string;
            format: number;
            minFilter: number;
            magFilter: number;
            wrapS: number;
            wrapT: number;
            rotation: number;
            offset: number[] | null;
            repeat: number[] | null;
            userData?: any;
        } | undefined;
        sheenRoughness: number;
        sheenRoughnessMap: {
            url: string;
            format: number;
            minFilter: number;
            magFilter: number;
            wrapS: number;
            wrapT: number;
            rotation: number;
            offset: number[] | null;
            repeat: number[] | null;
            userData?: any;
        } | undefined;
        alphaMode: AlphaMode;
    }>;
    materialChange: (material: MeshPhysicalMaterial, jsonConfig: any) => Promise<MeshPhysicalMaterial>;
};
export declare const setMaterialOnMessage: (action: MaterialFunc, material: MeshPhysicalMaterial, params: any) => Promise<MeshPhysicalMaterial | {
    type: string;
    side: import("three").Side;
    depthWrite: boolean;
    transparent: boolean;
    color: string;
    map: {
        url: string;
        format: number;
        minFilter: number;
        magFilter: number;
        wrapS: number;
        wrapT: number;
        rotation: number;
        offset: number[] | null;
        repeat: number[] | null;
        userData?: any;
    } | undefined;
    roughness: number;
    roughnessMap: {
        url: string;
        format: number;
        minFilter: number;
        magFilter: number;
        wrapS: number;
        wrapT: number;
        rotation: number;
        offset: number[] | null;
        repeat: number[] | null;
        userData?: any;
    } | undefined;
    metalness: number;
    metalnessMap: {
        url: string;
        format: number;
        minFilter: number;
        magFilter: number;
        wrapS: number;
        wrapT: number;
        rotation: number;
        offset: number[] | null;
        repeat: number[] | null;
        userData?: any;
    } | undefined;
    opacity: number;
    alphaTest: number;
    alphaMap: {
        url: string;
        format: number;
        minFilter: number;
        magFilter: number;
        wrapS: number;
        wrapT: number;
        rotation: number;
        offset: number[] | null;
        repeat: number[] | null;
        userData?: any;
    } | undefined;
    aoMap: {
        url: string;
        format: number;
        minFilter: number;
        magFilter: number;
        wrapS: number;
        wrapT: number;
        rotation: number;
        offset: number[] | null;
        repeat: number[] | null;
        userData?: any;
    } | undefined;
    aoMapIntensity: number;
    bumpMap: {
        url: string;
        format: number;
        minFilter: number;
        magFilter: number;
        wrapS: number;
        wrapT: number;
        rotation: number;
        offset: number[] | null;
        repeat: number[] | null;
        userData?: any;
    } | undefined;
    bumpScale: number;
    normalMap: {
        url: string;
        format: number;
        minFilter: number;
        magFilter: number;
        wrapS: number;
        wrapT: number;
        rotation: number;
        offset: number[] | null;
        repeat: number[] | null;
        userData?: any;
    } | undefined;
    normalMapType: import("three").NormalMapTypes;
    normalScale: import("three").Vector2Tuple;
    displacementMap: {
        url: string;
        format: number;
        minFilter: number;
        magFilter: number;
        wrapS: number;
        wrapT: number;
        rotation: number;
        offset: number[] | null;
        repeat: number[] | null;
        userData?: any;
    } | undefined;
    displacementBias: number;
    displacementScale: number;
    emissive: string;
    emissiveMap: {
        url: string;
        format: number;
        minFilter: number;
        magFilter: number;
        wrapS: number;
        wrapT: number;
        rotation: number;
        offset: number[] | null;
        repeat: number[] | null;
        userData?: any;
    } | undefined;
    emissiveIntensity: number;
    envMapIntensity: number;
    clearcoat: number;
    clearcoatMap: {
        url: string;
        format: number;
        minFilter: number;
        magFilter: number;
        wrapS: number;
        wrapT: number;
        rotation: number;
        offset: number[] | null;
        repeat: number[] | null;
        userData?: any;
    } | undefined;
    clearcoatNormalMap: {
        url: string;
        format: number;
        minFilter: number;
        magFilter: number;
        wrapS: number;
        wrapT: number;
        rotation: number;
        offset: number[] | null;
        repeat: number[] | null;
        userData?: any;
    } | undefined;
    clearcoatNormalScale: import("three").Vector2Tuple;
    clearcoatRoughness: number;
    clearcoatRoughnessMap: {
        url: string;
        format: number;
        minFilter: number;
        magFilter: number;
        wrapS: number;
        wrapT: number;
        rotation: number;
        offset: number[] | null;
        repeat: number[] | null;
        userData?: any;
    } | undefined;
    ior: number;
    reflectivity: number;
    sheen: number;
    transmission: number;
    transmissionMap: {
        url: string;
        format: number;
        minFilter: number;
        magFilter: number;
        wrapS: number;
        wrapT: number;
        rotation: number;
        offset: number[] | null;
        repeat: number[] | null;
        userData?: any;
    } | undefined;
    specularIntensity: number;
    specularColor: string;
    specularColorMap: {
        url: string;
        format: number;
        minFilter: number;
        magFilter: number;
        wrapS: number;
        wrapT: number;
        rotation: number;
        offset: number[] | null;
        repeat: number[] | null;
        userData?: any;
    } | undefined;
    sheenColor: string;
    sheenColorMap: {
        url: string;
        format: number;
        minFilter: number;
        magFilter: number;
        wrapS: number;
        wrapT: number;
        rotation: number;
        offset: number[] | null;
        repeat: number[] | null;
        userData?: any;
    } | undefined;
    sheenRoughness: number;
    sheenRoughnessMap: {
        url: string;
        format: number;
        minFilter: number;
        magFilter: number;
        wrapS: number;
        wrapT: number;
        rotation: number;
        offset: number[] | null;
        repeat: number[] | null;
        userData?: any;
    } | undefined;
    alphaMode: AlphaMode;
} | null>;
export declare const setMaterialActions: MaterialFunc[];
export default setMaterial;
export declare const setMaterialMessage: {
    setColor: (color: MaterialColor) => void;
    setMetalness: (metalness: Metalness) => void;
    setRoughness: (roughness: Roughness) => void;
    setMaterialMap: (textureMap: TextureMap) => void;
    setMaterialTextureFormat: (format: TextureFormat) => void;
    setMaterialTextureFiltering: (textureFiltering: TextureFiltering) => void;
    setMaterialTextureWrapT: (textureWrapping: TextureWrapping) => void;
    setMaterialTextureWrapS: (textureWrapping: TextureWrapping) => void;
    setMaterialTextureMapping: (textureMapping: TextureMapping) => void;
    setMaterialTextureRotation: (textureRotation: TextureRotation) => void;
    setMaterialTextureOffset: (textureOffset: TextureOffset) => void;
    setMaterialTextureRepeat: (textureRepeat: TextureRepeat) => void;
    setReflectivity: (reflectivity: Reflectivity) => void;
    setIOR: (ior: IOR) => void;
    setEnvMapIntensity: (intensity: Intensity) => void;
    setAoIntensity: (intensity: Intensity) => void;
    setDisplacementScale: (value: DisplacementScale) => void;
    setNormalScale: (value: NormalScale) => void;
    setBumpScale: (value: BumpScale) => void;
    setSheen: (value: Sheen) => void;
    setMaterialSheenTint: (value: SheenTint) => void;
    setMaterialSheenRoughness: (value: SheenRoughness) => void;
    setClearcoat: (value: Clearcoat) => void;
    setClearcoatNormal: (value: IScale) => void;
    setClearcoatRoughness: (value: ClearcoatRoughness) => void;
    setTransmission: (value: Transmission) => void;
    setAlphaMode: (value: AlphaModeValue) => void;
    setOpacity: (value: OpacityValue) => void;
    setAlphaTest: (value: AlphaTestValue) => void;
    invertAlphaTexture: (value: InvertAlphaTexture) => void;
    setEmissiveIntensity: (value: Intensity) => void;
    setEmissive: (value: MaterialColor) => void;
    setSide: (value: ISide) => void;
    setSpecularIntensity: (value: Intensity) => void;
    setSpecularColor: (value: MaterialColor) => void;
    exportScene: () => void;
    screenshot: (value?: IScreenShot) => void;
    materialChange: (value?: any) => void;
};
export declare const setBackgroundActions: MaterialFunc[];
export declare const setBackgroundMessage: {
    setBackground: (color: number[] | string | null) => void;
};
export declare const setBackgroundOnMessage: (action: MaterialFunc, params: any) => Promise<any>;
