import { IDisposable } from "../../Interfaces/IDisposable";
import { Nullable } from "../../types";
import { MeshDesignManager } from "./MeshDesignManager";
export declare class SceneDesignManager implements IDisposable {
    private _scene;
    private _zkScene;
    private _zkModel;
    private _zkDesign;
    private _rotation;
    private _showDesign;
    private _grids;
    private _meshDesignManagers;
    private _renderingNeededListeners;
    private _designNotifyMessageListeners;
    private _designRemoveMessageListeners;
    private _designEventMessages;
    private _meshDesignManagersRefreshing;
    get showDesign(): boolean;
    set showDesign(value: boolean);
    get rotation(): number;
    set rotation(value: number);
    constructor(scene: BABYLON.Scene, zkScene: Zakeke.Scene, zkModel: MPlaza.Model, zkDesign: MPlaza.Design, showDesign?: boolean);
    dispose(): void;
    private init;
    isForModels(scene: BABYLON.Scene, zkModel: MPlaza.Model, zkDesign: MPlaza.Design): boolean;
    private getDefaultModelScene;
    private getModelSceneMeshSide;
    refreshAsync(): Promise<void>;
    private isValidEffectForMesh;
    refreshMeshDesignAsync(meshID: string, submeshID?: number, effect?: MPlaza.ModelSceneMeshDesignEffect): Promise<void>;
    getMeshDesignMananger(mesh: BABYLON.AbstractMesh, subMesh: Nullable<BABYLON.SubMesh>): Nullable<MeshDesignManager>;
    clearMeshDesignManagers(): void;
    setCustomizerGrids(grids: MPlaza.Grid[]): void;
    getItemsInfo(): MPlaza.ItemInfo[];
    execOnMeshManagersContainingItem(guid: string, func: (manager: MeshDesignManager) => Promise<void>): Promise<void>;
    removeItem(guid: string): void;
    addItemText(settings: any, sideID: number): void;
    addItemImage(imageID: number, sideID: number): Promise<void>;
    setItemText(guid: string, text: string): void;
    setItemItalic(guid: string, italic: boolean): void;
    setItemBold(guid: string, bold: boolean): void;
    setItemColor(guid: string, color: string): void;
    setItemFontFamily(guid: string, fontFamily: string): void;
    setItemImage(guid: string, image: any): Promise<void>;
    setItemTextOnPath(guid: string, areaId: number, value: boolean): void;
    removeItemImage(guid: string): void;
    setDesignVisibility(meshId: string, visibile: boolean): void;
    getDesignItemsJson(): string;
    getDesignID(): number;
    private fireRenderingNeededEvent;
    addRenderingNeededListener(listenerFunction: () => void): void;
    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;
    translateDesignView(mesh: BABYLON.AbstractMesh, submesh: Nullable<BABYLON.SubMesh>, dx: number, dy: number): void;
    rotateDesignView(mesh: BABYLON.AbstractMesh, submesh: Nullable<BABYLON.SubMesh>, angle: number, centerX: number, centerY: number): void;
    scaleDesignView(mesh: BABYLON.AbstractMesh, submesh: Nullable<BABYLON.SubMesh>, hor: number, ver: number, centerX: number, centerY: number): void;
    setDesignViewTextureUVChannelAsync(mesh: BABYLON.AbstractMesh, submesh: Nullable<BABYLON.SubMesh>, uvChannel: number): Promise<void>;
    setDesignViewFormFactorAsync(mesh: BABYLON.AbstractMesh, submesh: Nullable<BABYLON.SubMesh>, percWidth: number, percHeight: number): Promise<void>;
    connectMeshToModelSideAsync(meshID: string, submeshID: number, sideID: number): Promise<void>;
    expandCanvasMeshes(): void;
    contractCanvasMeshes(): void;
}
