import { EventObject, EventWithSenderArg } from "@aurigma/design-atoms-model/EventObject";
import { PlaceholderItem, ImageItem, Item } from "@aurigma/design-atoms-model/Product/Items";
import { Product, SurfaceContainer, Surface, PrintArea } from "@aurigma/design-atoms-model/Product";
import { Viewer } from "../Viewer";
import { BaseRectangleItemHandler, ItemHandler, PlaceholderItemHandler } from "../ItemHandlers";
import { Canvas } from "../Canvas";
import { IProductThemeConfig } from "@aurigma/design-atoms-model/Product/Interfaces";
import { IEventManager } from "./IEventManager";
import { IAddEventArgs, IRemoveEventArgs, IMoveEventArgs, CollectionChangeEventArgs } from "@aurigma/design-atoms-model/ICollectionChangeEventArgs";
import { RectangleF, PointF } from "@aurigma/design-atoms-model/Math";
import { RgbColor } from "@aurigma/design-atoms-model/Colors/RgbColor";
import * as TextWhizz from "@aurigma/text-whizz/TextWhizzJS";
import { IDpiChangedEventArgs } from "./ViolationService/Violations/ImageQualityViolation";
import { IContextMenuParams } from "../Input/InputManager/IInputManager";
import { IInteractiveZonesStateChangedEventArgs } from "../Viewer/Interfaces/IInteractiveZonesHandler";
export declare class EventManager implements IEventManager {
    private _product;
    private _viewer;
    private _canvas;
    constructor(_product: Product, _viewer: Viewer);
    get canvas(): Canvas;
    set canvas(value: Canvas);
    setProduct(product: Product): void;
    private _notifyContainerCollectionChanged;
    private _notifySurfaceCollectionChanged;
    private _notifyItemHanderCollectionChanged;
    private _notifyLayerCollectionChanged;
    private _notifyPrintAreaCollectionChanged;
    private _notifyItemCollectionChanged;
    private _notifyItemAdded;
    private _notifyItemRemoved;
    private _notifyItemMoved;
    private _notifyUnderMockupCollectionChanged;
    private _notifyOverMockupCollectionChanged;
    private _notifyPreviewMockupCollectionChanged;
    private _notifyPrintAreaPropertyChanged;
    private _notifyItemPropertyChanged;
    private _notifyItemChanged;
    private _notifyItemChanging;
    private _notifySelectButtonClick;
    private _notifyViolationWarningButtonClick;
    private _notifyDoubleClick;
    private _notifyShapePathLoaded;
    private _notifyEnteredEditMode;
    private _notifyExitedEditMode;
    private _notifyCurrentItemChanged;
    private _notifySelectedItemChanged;
    private _notifyDragNDropDone;
    private _notifyDragNDropStarting;
    private _notifyDragNDropPerformed;
    private _notifyReady;
    private _notifyWorkspaceSizeChanged;
    private _notifyIsEditingChanged;
    private _notifyBeforeReplaceItemHandler;
    private _notifyAfterReplaceItemHandler;
    private _subscribeToProductEvents;
    private _unsubscribeFromProductEvents;
    private _onSurfaceCollectionChanged;
    private _onLayerCollectionChanged;
    private _onItemHanderCollectionChanged;
    private _subscribeToSurfaceEvents;
    private _unsubscribeFromSurfaceEvents;
    private _onContainerCollectionChanged;
    private _subscribeToContainerEvents;
    private _unsubscribeFromContainerEvents;
    private _onPrintAreaCollectionChanged;
    private _subscribeToPrintAreaEvents;
    private _unsubscribeFromPrintAreaEvents;
    private _onItemCollectionChanged;
    private _subscribeToItemEvents;
    private _subscribeToItemHandlerEvents;
    private _unsubscribeFromItemEvents;
    private _unsubscribeFromItemHandlerEvents;
    private _subscribeOnCanvasEvents;
    private _unsubscribeFromCanvasEvents;
    private _subscribeToLayerEvents;
    private _unsubscribeFromLayerEvents;
    private _itemChangedEvent;
    get itemChangedEvent(): EventObject<Item>;
    addItemChanged(listener: (sender: Item) => void): void;
    removeItemChanged(listener: (sender: Item) => void): void;
    private _itemChangingEvent;
    get itemChangingEvent(): EventObject<Item>;
    addItemChanging(listener: (sender: Item) => void): void;
    removeItemChanging(listener: (sender: Item) => void): void;
    private _itemPropertyChangedEvent;
    get itemPropertyChangedEvent(): EventWithSenderArg<Item, string>;
    addItemPropertyChanged(listener: (sender: Item, propertyName: string) => void): void;
    removeItemPropertyChanged(listener: (sender: Item, propertyName: string) => void): void;
    private _changeSurfaceEvent;
    get surfaceChangedEvent(): EventObject<Surface>;
    addSurfaceChanged(listener: (Surface: any) => void): void;
    removeSurfaceChanged(listener: (Surface: any) => void): void;
    private _itemAddedEvent;
    get itemAddedEvent(): EventObject<IAddEventArgs<Item>>;
    addItemAdded(listener: (args: IAddEventArgs<Item>) => void): void;
    removeItemAdded(listener: (args: IAddEventArgs<Item>) => void): void;
    private _itemRemovedEvent;
    get itemRemovedEvent(): EventObject<IRemoveEventArgs<Item>>;
    addItemRemoved(listener: (args: IRemoveEventArgs<Item>) => void): void;
    removeItemRemoved(listener: (args: IRemoveEventArgs<Item>) => void): void;
    private _itemMovedEvent;
    get itemMovedEvent(): EventObject<IMoveEventArgs>;
    addItemMoved(listener: (args: IMoveEventArgs) => void): void;
    removeItemMoved(listener: (args: IMoveEventArgs) => void): void;
    private _imageContentChangedEvent;
    get imageContentChangedEvent(): EventObject<ImageItem | PlaceholderItem>;
    addImageContentChanged(listener: (item: PlaceholderItem | ImageItem) => void): void;
    removeImageContentChanged(listener: (item: PlaceholderItem | ImageItem) => void): void;
    private _snapshotLoadedEvent;
    get snapshotLoadedEvent(): EventObject<Surface | Product>;
    addSnapshotLoadedEvent(listener: (snapshot: Product | Surface) => void): void;
    removeSnapshotLoadedEvent(listener: (snapshot: Product | Surface) => void): void;
    private _beforeSnapshotLoad;
    get beforeSnapshotLoad(): EventObject<Surface | Product>;
    addBeforeSnapshotLoad(listener: (snapshot: Product | Surface) => void): void;
    removeBeforeSnapshotLoad(listener: (snapshot: Product | Surface) => void): void;
    private _surfaceCollectionChangedEvent;
    get surfaceCollectionChangedEvent(): EventObject<unknown>;
    addSurfaceCollectionChanged(listener: () => void): void;
    removeSurfaceCollectionChanged(listener: () => void): void;
    private _layerCollectionChangedEvent;
    get layerCollectionChangedEvent(): EventObject<unknown>;
    addLayerCollectionChanged(listener: () => void): void;
    removeLayerCollectionChanged(listener: () => void): void;
    private _itemHanderCollectionChangedEvent;
    get itemHanderCollectionChangedEvent(): EventObject<unknown>;
    addIItemHandelrCollectionChanged(listener: () => void): void;
    removeItemHandlerCollectionChanged(listener: () => void): void;
    private _containerCollectionChangedEvent;
    get containerCollectionChangedEvent(): EventObject<CollectionChangeEventArgs>;
    addContainerCollectionChanged(listener: (args: CollectionChangeEventArgs) => void): void;
    removeContainerCollectionChanged(listener: (args: CollectionChangeEventArgs) => void): void;
    private _itemCollectionChangedEvent;
    get itemCollectionChangedEvent(): EventObject<unknown>;
    addItemCollectionChanged(listener: () => void): void;
    removeItemCollectionChanged(listener: () => void): void;
    private _underMockupContainerCollectionChangedEvent;
    get underMockupContainerCollectionChangedEvent(): EventObject<unknown>;
    addUnderMockupContainerCollectionChanged(listener: () => void): void;
    removeUnderMockupContainerCollectionChanged(listener: () => void): void;
    private _overMockupContainerCollectionChangedEvent;
    get overMockupContainerCollectionChangedEvent(): EventObject<unknown>;
    addOverMockupContainerCollectionChanged(listener: () => void): void;
    removeOverMockupContainerCollectionChanged(listener: () => void): void;
    private _previewMockupContainerCollectionChangedEvent;
    get previewMockupContainerCollectionChangedEvent(): EventObject<unknown>;
    addPreviewMockupContainerCollectionChanged(listener: () => void): void;
    removePreviewMockupContainerCollectionChanged(listener: () => void): void;
    private _deleteToolbarButtonClickEvent;
    get deleteToolbarButtonClickEvent(): EventObject<Item>;
    addDeleteToolbarButtonClick(listener: (item: Item) => void): void;
    removeDeleteToolbarButtonClick(listener: (item: Item) => void): void;
    private _handleToolbarButtonClickEvent;
    get handleToolbarButtonClickEvent(): EventObject<Item>;
    addHandleToolbarButtonClick(listener: (item: Item) => void): void;
    removeHandleToolbarButtonClick(listener: (item: Item) => void): void;
    private _selectToolbarButtonClickEvent;
    get selectToolbarButtonClickEvent(): EventObject<Item>;
    addSelectToolbarButtonClick(listener: (item: Item) => void): void;
    removeSelectToolbarButtonClick(listener: (item: Item) => void): void;
    private _enteredEditModeEvent;
    get enteredEditModeEvent(): EventObject<Item>;
    addEnteredEditMode(listener: (item: Item) => void): void;
    removeEnteredEditMode(listener: (item: Item) => void): void;
    private _exitedEditModeEvent;
    get exitedEditModeEvent(): EventObject<Item>;
    addExitedEditMode(listener: (item: Item) => void): void;
    removeExitedEditMode(listener: (item: Item) => void): void;
    private _editToolbarButtonClickEvent;
    get editToolbarButtonClickEvent(): EventObject<Item>;
    addEditToolbarButtonClick(listener: (item: Item) => void): void;
    removeEditToolbarButtonClick(listener: (item: Item) => void): void;
    private _selectButtonClickEvent;
    get selectButtonClickEvent(): EventObject<Item>;
    addSelectButtonClick(listener: (item: PlaceholderItem) => void): void;
    removeSelectButtonClick(listener: (item: PlaceholderItem) => void): void;
    private _violationWarningButtonClickEvent;
    get violationWarningButtonClickEvent(): EventObject<Item>;
    addViolationWarningButtonClick(listener: (item: Item) => void): void;
    removeViolationWarningButtonClick(listener: (item: Item) => void): void;
    private _doubleClickEvent;
    get doubleClickEvent(): EventObject<Item>;
    addDoubleClick(listener: (item: Item) => void): void;
    removeDoubleClick(listener: (item: Item) => void): void;
    private _shapePathLoadedEvent;
    get shapePathLoadedEvent(): EventObject<unknown>;
    addShapePathLoaded(listener: () => void): void;
    removeShapePathLoaded(listener: () => void): void;
    private _currentItemChangedEvent;
    get currentItemChangedEvent(): EventObject<Item>;
    addCurrentItemChanged(listener: (item: Item) => void): void;
    removeCurrentItemChanged(listener: (item: Item) => void): void;
    private _selectedItemChangedEvent;
    get selectedItemChangedEvent(): EventObject<Item[]>;
    addSelectedItemChanged(listener: (items: Item[]) => void): void;
    removeSelectedItemChanged(listener: (items: Item[]) => void): void;
    private _dragNDropDoneEvent;
    get dragNDropDoneEvent(): EventObject<Object>;
    addDragNDropDone(listener: () => void): void;
    removeDragNDropDone(listener: () => void): void;
    private _dragNDropStartingEvent;
    get dragNDropStartingEvent(): EventObject<Object>;
    addDragNDropStarting(listener: () => void): void;
    removeDragNDropStarting(listener: () => void): void;
    private _dragNDropPerformedEvent;
    get dragNDropPerformedEvent(): EventObject<Object>;
    addDragNDropPerformed(listener: () => void): void;
    removeDragNDropPerformed(listener: () => void): void;
    private _readyEvent;
    get readyEvent(): EventObject<unknown>;
    addReady(listener: () => void): void;
    removeReady(listener: () => void): void;
    private _workspaceSizeChangedEvent;
    get workspaceSizeChangedEvent(): EventObject<unknown>;
    addWorkspaceSizeChanged(listener: () => void): void;
    removeWorkspaceSizeChanged(listener: () => void): void;
    private _productThemeChangedEvent;
    get productThemeChangedEvent(): EventObject<IProductThemeConfig>;
    addProductThemeChanged(listener: (theme: IProductThemeConfig) => void): void;
    removeProductThemeChanged(listener: (theme: IProductThemeConfig) => void): void;
    private _userEditContainerChangedEvent;
    get userEditContainerChangedEvent(): EventObject<SurfaceContainer>;
    addUserEditContainerChanged(listener: (container: SurfaceContainer) => void): void;
    removeUserEditContainerChanged(listener: (container: SurfaceContainer) => void): void;
    private _createInputHandlerFinishedEvent;
    get createInputHandlerFinishedEvent(): EventObject<PointF | RectangleF>;
    addcreateInputHandlerFinished(listener: (eventArgs: PointF | RectangleF) => void): void;
    removecreateInputHandlerFinished(listener: (eventArgs: PointF | RectangleF) => void): void;
    private _printAreaCollectionChangedEvent;
    get printAreaCollectionChangedEvent(): EventObject<unknown>;
    addPrintAreaCollectionChanged(listener: () => void): void;
    removePrintAreaCollectionChanged(listener: () => void): void;
    private _printAreaPropertyChangedEvent;
    get printAreaPropertyChangedEvent(): EventWithSenderArg<PrintArea, string>;
    addPrintAreaPropertyChanged(listener: (sender: PrintArea, propertyName: string) => void): void;
    removePrintAreaPropertyChanged(listener: (sender: PrintArea, propertyName: string) => void): void;
    private _selectPixelFinishedEvent;
    get selectPixelFinished(): EventObject<RgbColor>;
    addMouseSelectPixelFinished(listener: (eventArgs: RgbColor) => void): void;
    removeMouseSelectPixelFinished(listener: (eventArgs: RgbColor) => void): void;
    private _beforeReplaceItemHandlerEvent;
    get beforeReplaceItemHandlerEvent(): EventObject<ItemHandler>;
    addBeforeReplaceItemHandlerEvent(listener: (eventArgs: ItemHandler) => void): void;
    removeBeforeReplaceItemHandlerEvent(listener: (eventArgs: ItemHandler) => void): void;
    private _afterReplaceItemHandlerEvent;
    get afterReplaceItemHandlerEvent(): EventObject<ItemHandler>;
    addAfterReplaceItemHandlerEvent(listener: (eventArgs: ItemHandler) => void): void;
    removeAfterReplaceItemHandlerEvent(listener: (eventArgs: ItemHandler) => void): void;
    private _textWhizzReady;
    get textWhizzReadyEvent(): EventObject<typeof TextWhizz>;
    addTextWhizzReady(listener: (textWhizz: typeof TextWhizz) => void): void;
    removeTextWhizzReady(listener: (textWhizz: typeof TextWhizz) => void): void;
    private _imageDpiChangedEvent;
    get imageDpiChangedEvent(): EventObject<IDpiChangedEventArgs>;
    addImageDpiChanged(listener: (value: IDpiChangedEventArgs) => void): void;
    removeImageDpiChanged(listener: (value: IDpiChangedEventArgs) => void): void;
    private _isEditingChangedEvent;
    addIsEditingChanged(listener: (ph: PlaceholderItemHandler) => void): void;
    removeIsEditingChanged(listener: (ph: PlaceholderItemHandler) => void): void;
    private _contextMenuEvent;
    get contextMenuEvent(): EventObject<IContextMenuParams>;
    addOnContextMenu(listener: (value: IContextMenuParams) => void): void;
    removeOnContextMenu(listener: (value: IContextMenuParams) => void): void;
    private _itemHandlerHoverEvent;
    get itemHandlerHoverEvent(): EventObject<BaseRectangleItemHandler[]>;
    addItemHandlerHover(listener: (h: BaseRectangleItemHandler[]) => void): void;
    removeItemHandlerHover(listener: (h: BaseRectangleItemHandler[]) => void): void;
    private _dndStartedEvent;
    get dndStartedEvent(): EventObject<any>;
    addDndStarted(listener: (h: any) => void): void;
    removeDndStarted(listener: (h: any) => void): void;
    private _dndFinishedEvent;
    get dndFinishedEvent(): EventObject<any>;
    addDndFinished(listener: (h: any) => void): void;
    removeDndFinished(listener: (h: any) => void): void;
    private _interactiveContainersChangedEvent;
    get interactiveContainersChangedEvent(): EventObject<SurfaceContainer[]>;
    addInteractiveContainersChanged(listener: (h: SurfaceContainer[]) => void): void;
    removeInteractiveContainersChanged(listener: (h: SurfaceContainer[]) => void): void;
    private _maskedContainersChangedEvent;
    get maskedContainersChangedEvent(): EventObject<SurfaceContainer[]>;
    addMaskedContainersChanged(listener: (h: SurfaceContainer[]) => void): void;
    removeMaskedContainersChanged(listener: (h: SurfaceContainer[]) => void): void;
    private _interactiveZonesChangedEvent;
    get interactiveZonesChangedEvent(): EventObject<IInteractiveZonesStateChangedEventArgs>;
    addInteractiveZonesChanged(listener: (e: IInteractiveZonesStateChangedEventArgs) => void): void;
    removeInteractiveZonesChanged(listener: (e: IInteractiveZonesStateChangedEventArgs) => void): void;
    dispose(): void;
}
