import { EntityEidType, BasicInfoAtomType, VisibleAtomType, EntityFlagAtomType, EntityOutlinerAtomType, IColorRGBA } from '../data-type';
/**
 * @interface IMaterial
 * @param {string} componentName (optional)
 * @param {number} materialIndex (optional)
 * @param {string | null} mIEid (optional)
 */
export interface IMaterial {
    componentName?: string;
    materialIndex?: number;
    mIEid?: string | null;
}
/**
 * @interface MaterialAtomType
 * @param {Array<IMaterial>} changedMaterialInfo
 */
export interface MaterialAtomType {
    changedMaterialInfo: Array<IMaterial>;
    bReceivesDecals: boolean;
}
/**
 * @interface MIParamsAtomType
 * @param {string | null} mid
 * @param {number} uTiling
 * @param {number} vTiling
 * @param {number} allTiling
 * @param {number} uPanner
 * @param {number} vPanner
 * @param {number} rotationAngle
 * @param {boolean} triplanar
 * @param {boolean} enableRandomUV
 * @param {boolean} useWorld
 * @param {number} dirty_UTiling
 * @param {number} dirty_VTiling
 * @param {number} dirty_AllTiling
 * @param {number} dirty_UPanner
 * @param {number} dirty_VPanner
 * @param {number} dirty_RotationAngle
 * @param {boolean} dirty_Triplanar
 * @param {boolean} dirty_EnableRandomUV
 * @param {boolean} dirty_UseWorld
 * @param {IColorRGBA | string} diffuse_Color
 * @param {number} roughness_Intensity
 * @param {number} opacity
 * @param {number} diffuse_Intensity
 * @param {number} diffuse_Saturation
 * @param {number} normal_Intensity
 * @param {number} specular_Intensity
 * @param {number} aO_Intensity
 * @param {number} metallic_Intensity
 * @param {boolean} useDirty
 * @param {IColorRGBA} dirty_Color
 * @param {number} dirty_Intensity
 * @param {IColorRGBA} emissive_Color
 * @param {number} emissive_Intensity
 * @param {number} emissive_Saturation
 * @param {string} diffuse
 * @param {string} normal
 * @param {string} specular
 * @param {string} aO
 * @param {string} metallic
 * @param {string} roughness
 * @param {string} dirty
 * @param {string} emissive
 */
export interface MIParamsAtomType {
    mid: string | null;
    uTiling: number;
    vTiling: number;
    allTiling: number;
    uPanner: number;
    vPanner: number;
    rotationAngle: number;
    triplanar: boolean;
    enableRandomUV: boolean;
    useWorld: boolean;
    dirty_UTiling: number;
    dirty_VTiling: number;
    dirty_AllTiling: number;
    dirty_UPanner: number;
    dirty_VPanner: number;
    dirty_RotationAngle: number;
    dirty_Triplanar: boolean;
    dirty_EnableRandomUV: boolean;
    dirty_UseWorld: boolean;
    diffuse_Color: IColorRGBA | string;
    roughness_Intensity: number;
    opacity: number;
    diffuse_Intensity: number;
    diffuse_Saturation: number;
    normal_Intensity: number;
    specular_Intensity: number;
    aO_Intensity: number;
    metallic_Intensity: number;
    useDirty: boolean;
    dirty_Color: IColorRGBA | string;
    dirty_Intensity: number;
    emissive_Color: IColorRGBA | string;
    emissive_Intensity: number;
    emissive_Saturation: number;
    diffuse: string;
    normal: string;
    specular: string;
    aO: string;
    metallic: string;
    roughness: string;
    dirty: string;
    emissive: string;
}
/**
 * @interface MIParamsType
 * @extends EntityEidType,Partial<BasicInfoAtomType>,Partial<VisibleAtomType>,Partial<EntityFlagAtomType>
 * @param {Partial<MIParamsAtomType>} materialStyle (optional)
 */
export interface MIParamsType extends EntityEidType, Partial<BasicInfoAtomType>, Partial<VisibleAtomType>, Partial<EntityFlagAtomType>, Partial<EntityOutlinerAtomType> {
    materialStyle?: Partial<MIParamsAtomType>;
    seedId?: string | null;
}
/**
 * @interface IGenerate
 * @param {Partial<MIParamsAtomType>} MIParamsAtom
 * @param {Partial<BasicInfoAtomType>} BasicInfoAtom
 * @param {Partial<EntityFlagAtomType>} EntityFlagAtom
 */
export interface IGenerate {
    MIParamsAtom?: Partial<MIParamsAtomType>;
    BasicInfoAtom?: Partial<BasicInfoAtomType>;
    EntityFlagAtom?: Partial<EntityFlagAtomType>;
    EntityOutlinerAtom?: Partial<EntityOutlinerAtomType>;
}
export interface IentitySlotParams {
    entity: Record<string, any>;
    meshName: string;
    MaterialIndex: number;
    bHighlight: boolean;
}
