import { Nullable } from "../../types";
type VariableMaterialSelection = {
    id: string;
    name: string;
    selected: boolean;
};
type SelectedAttributeOption = {
    attributeID: Nullable<number>;
    attributeGuid: Nullable<string>;
    optionID: Nullable<number>;
    optionGuid: Nullable<string>;
};
export declare class Preview3DConfigurationManager {
    private _zkModel;
    private _zkScene;
    private _scene;
    private _sceneHelper;
    constructor(zkModel: MPlaza.Model, zkScene: Zakeke.Scene, scene: BABYLON.Scene);
    getPossibleVariableMaterials(): BABYLON.Material[];
    getVariableMaterials(): BABYLON.Material[];
    getVariableMaterialsSelection(): VariableMaterialSelection[];
    getVariantMaterialsWithOriginal(modelColor: any): {
        material: BABYLON.Material;
        variableMaterial: BABYLON.Material;
    }[];
    updateVariableMaterials(): void;
    unsetVariableMaterialID(materialID: string): void;
    setVariableMaterialID(materialID: string): void;
    private checkVariantOption;
    private createVariantOption;
    private removeVariantOption;
    private getOrCreateVariantAttribute;
    private getOrCreateVariantAttributeOption;
    private getVariantID;
    private checkVariantOptionMaterial;
    private setupSceneMaterialForVariant;
    private getSceneMaterialForVariant;
    private isSceneMaterialForVariant;
    private canDeleteSceneMaterialForVariant;
    private getSceneMaterialMetadata;
    private getOrCreateSceneMaterialMetadata;
    private removeSceneMaterialMetadata;
    private cloneSceneMaterial;
    private deleteSceneMaterial;
    private checkVariantOptionActions;
    getVariantMaterials(modelColor: MPlaza.Color): BABYLON.Material[];
    getSelectedAttributeOption(selectedModelColor: MPlaza.Color): SelectedAttributeOption;
    resetOriginaMaterialsOnMeshes(): void;
    getMeshesUsingMaterial(materialID: string): BABYLON.AbstractMesh[];
}
export {};
