import type { Texture } from 'three';
import { MeshPhysicalMaterial } from 'three';
import { AlphaMode } from '../interface';
export interface cTexture {
    texture?: Texture;
    fullUrl: string;
    name: string;
    basis?: string;
}
export declare const textureCache: Map<string, cTexture>;
export declare function getMaterialByJson(item: any): Promise<MeshPhysicalMaterial>;
export declare function getJsonByMaterial(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;
}>;
