import { IDisposable } from '../../Interfaces/IDisposable';
import { Nullable } from '../../types';
export declare const IS_ANDROID: boolean;
export declare const IS_IOS: boolean;
export declare class MeshDesignManager implements IDisposable {
    private _scene;
    private _sceneHelper;
    private _mesh;
    private _subMesh;
    private _zkModel;
    private _zkDesign;
    private _zkScene;
    private _isRefreshing;
    private _showDesign;
    private _viewRotation;
    private _designTextureResolution;
    private _effect;
    private _meshSide;
    private _side;
    static DEFAULT_SIZE: number;
    private _isDisposed;
    private _baseWidth;
    private _baseHeight;
    private _textureWidth;
    private _textureHeight;
    private _coordinatesIndex;
    private _currentVisibliity;
    private _canvasMesh;
    private _originalCanvasMeshPosition;
    private _originalCanvasMeshScaling;
    private _normalmapMaterial;
    private _originalMaterial;
    private _blankDataUrl;
    private _innerCanvasMesh;
    private _outerCanvasMesh;
    private _ownDynamicMaterial;
    private _dynamicMaterial;
    private _dynamicTexture;
    private _normalmapTexture;
    private _dynamicOpacityTexture;
    private _ownOldDynamicMaterial;
    private _oldDynamicMaterial;
    private _originalDiffuseTexture;
    private _combinedDiffuseTexture;
    private _originalMeshNormalmapTexture;
    private _originalDesignNormalmapTexture;
    private _meshCombinedNormalmapTexture;
    private _designCombinedNormalmapTexture;
    private _originalMeshLightmapTexture;
    private _originalDesignLightmapTexture;
    private _meshCombinedLightmapTexture;
    private _designCombinedLightmapTexture;
    private _innerShadowTexture;
    private _outerShadowTexture;
    private _context;
    private _canvas;
    private _canvasID;
    private _customizer;
    private _renderingNeededListeners;
    private _proceduralNormalMap;
    private _innerShadowGenerator;
    private _outerShadowGenerator;
    private _debouncedUpdateDynamicTexture;
    private _originalViewMatrixValues;
    private _grids;
    private isFirstRender;
    get showDesign(): boolean;
    set showDesign(value: boolean);
    get rotation(): number;
    set rotation(value: number);
    get side(): Nullable<MPlaza.Side>;
    private constructor();
    getInternalCustomizer(): Nullable<MPlaza.Customizer>;
    static createMeshDesignManagerAsync(scene: BABYLON.Scene, zkScene: Zakeke.Scene, mesh: BABYLON.AbstractMesh, subMesh: BABYLON.SubMesh | null, zkModel: MPlaza.Model, zkDesign: MPlaza.Design, showDesign?: boolean, effect?: MPlaza.ModelSceneMeshDesignEffect, viewRotation?: number): Promise<MeshDesignManager>;
    private initAsync;
    isForMesh(mesh: BABYLON.AbstractMesh, subMesh: Nullable<BABYLON.SubMesh>): boolean;
    getMeshID(): Nullable<string>;
    getSubMeshIdx(): number;
    private getMaterialIDForDesign;
    private getDesignConfig;
    dispose(): void;
    private disposeOuterInnerCanvasMeshes;
    private disposeNormalmapMaterial;
    private disposeDynamicMaterial;
    private disposeOldDynamicMaterial;
    private createCanvasMeshClone;
    expandCanvasMesh(): void;
    expandCanvasMesh_old(): void;
    contractCanvasMesh(): void;
    contractCanvasMesh_old(): void;
    private setupMeshSide;
    private setupTextureSize;
    private checkDefaultEffect;
    private getAllSides;
    private refreshModelSide;
    private setupClonedObjectsAsync;
    private setupNormalmapMaterialAsync;
    private getOriginalTexture;
    private getMaterialDiffuseTexturePropertyName;
    private getMaterialOpacityTexturePropertyName;
    private getMaterialNormalmapTexturePropertyName;
    private getMaterialLightmapTexturePropertyName;
    private getMaterialDiffuse;
    private getMaterialNormalmap;
    private getMaterialLightmap;
    private getMaterialOpacity;
    private setMaterialLightmap;
    private setTextureWrapping;
    private setupCanvasAsync;
    setCustomizerGrids(grids: MPlaza.Grid[]): void;
    private restoreOrignalMaterial;
    private getMeshesUsingMaterial;
    private checkNormalmapMaterialAsync;
    private checkDynamicMaterialAsync;
    private setupDynamicMaterialAsync;
    private cloneMaterialAsync;
    getMeshHierarchySize(mesh: BABYLON.AbstractMesh): BABYLON.Vector3;
    getMeshHierarchyCenter(mesh: BABYLON.AbstractMesh): BABYLON.Vector3;
    refreshAsync(effect?: MPlaza.ModelSceneMeshDesignEffect): Promise<void>;
    updateDynamicTextureAsync(): Promise<void>;
    private updateDynamicTextureInternalAsync;
    private resetDynamicTextures;
    private updateOpacityTextureAsync;
    private combineDiffuseTexturesAsync;
    private updateNormalmapTextureAsync;
    private setNormalmapTextureAsync;
    private combineMeshNormalmapTexturesAsync;
    private resetMeshNormalmapTexture;
    private resetDesignNormalmapTexture;
    private combineDesignNormalmapTexturesAsync;
    private updateInnerShadowTextureAsync;
    private setInnerShadowTextureAsync;
    private combineDesignLightmapTexturesAsync;
    private removeInnerShadowTexture;
    private updateOuterShadowTextureAsync;
    private setOuterShadowTextureAsync;
    private combineMeshLightmapTexturesAsync;
    removeOuterShadowTexture(): void;
    private compareTextures;
    private dataURItoBlob;
    private downloadImage;
    setDesignMeshVisibility(visibile: boolean): void;
    getItemsInfo(): MPlaza.ItemInfo[];
    removeItem(itemGuid: string): void;
    addItemText(settings: any): void;
    setItemText(itemGuid: string, text: string): void;
    setItemBold(guid: string, bold: boolean): void;
    setItemItalic(guid: string, italic: boolean): void;
    setItemColor(guid: string, color: string): void;
    setItemFontFamily(guid: string, fontFamily: string): void;
    addItemImage(imageID: number): Promise<void>;
    setItemImage(guid: string, image: any): Promise<void>;
    setItemTextOnPath(guid: string, value: boolean): void;
    removeItemImage(guid: any): void;
    containsItem(guid: any): boolean;
    addNotifyMessageListener(listener: (sideID: number, itemGuid: string, type: number, title: string, message: string, closable: boolean, requiredWidth: number, requiredHeight: number, addToCartDisabledIfVisible: boolean) => void): void;
    addRemoveMessageListener(listener: (sideID: number, itemGuid: string) => void): void;
    setEventMessages(eventMessages: any): void;
    private fireRenderingNeededEvent;
    addRenderingNeededListener(listenerFunction: () => void): void;
    translateDesignView(dx: number, dy: number): void;
    rotateDesignView(angle: number, centerX: number, centerY: number): void;
    scaleDesignView(hor: number, ver: number, centerX: number, centerY: number): void;
    setDesignViewTextureUVChannelAsync(uvChannel: number): Promise<void>;
    setDesignViewFormFactorAsync(percWidth: any, percHeight: any): Promise<void>;
}
