import * as TextWhizz from "@aurigma/text-whizz/TextWhizzJS";
import { Item, RectangleF, PointF, RotatedRectangleF, Collection, Func } from "@aurigma/design-atoms-model";
import { ITextEditor, ILimitsViolationEventData } from "@aurigma/design-atoms-text";
import { ItemHandler } from "./ItemHandlers/ItemHandler";
import { PlaceholderItemHandler } from "./ItemHandlers/PlaceholderItemHandler";
import { Service } from "./Services/Service";
import { LayerCollection } from "./LayerCollection";
import { DragNDropHandler } from "./DragNDropHandler";
import { RotateHandler } from "./RotateHandler";
import { Viewer } from "./Viewer/Viewer";
import { UpdateStatus } from "./UpdateStatus";
import { BaseRectangleItemHandler } from "./ItemHandlers/BaseRectangleItemHandler";
import { CanvasData } from "./CanvasData";
import { HandlerFactoryByItem } from "./ItemHandlers/HandlerFactoryByItem";
import { History } from "./History";
import { HoverHandler } from "./Input/InputHandler/Default/HoverHandler";
import { IActiveTextCanvasHandler } from "./CanvasElementHandler";
import { SnapLinesHandler } from "./Viewer/SnapLinesHandler";
import { GroupItemHandler } from "./ItemHandlers/GroupItemHandler";
import { FontRegistry } from "./InPlace/FontRegistry";
import { NewBaseTextItemHandler } from "./ItemHandlers";
import { TextRenderer } from "./InPlace/TextRenderer";
import { IViewerConfiguration, TextEditorMode } from "./Viewer/Interfaces";
import { Translations } from "./Viewer/Translations";
import { CanvasRendererStyle } from "./Canvas/CanvasRendererStyle";
import { IFontService } from "./InPlace/IFontService";
import { ISpotlightOptions } from "./Canvas/Interfaces/ISpotlightOptions";
import { HitTestManager } from "./Services/HitTestManager";
import { SelectionHandler } from "./Services/Selection/SelectionHandler";
import { RubberbandHandler } from "./Input/InputHandler/Default/RubberbandHandler";
import { FloatingToolbarManager } from "./Services/FloatingToolbar/FloatingToolbarManager";
import { GetItemHandlersOptions, ICanvas } from "./ICanvas";
import { IDesignAtomsApiClient } from "./Services/IDesignAtomsApiClient";
import { UpdateButtonGroupsOptions } from "./Viewer/UpdateButtonGroupsOptions";
import { ProductHandler } from "./Services";
import { IWorkspace } from "./IWorkspace";
import { ICanvasDataSource } from "./ICanvasDataSource";
import { IRenderingConfigProvider } from "./IRenderingConfigProvider";
export declare type AlignType = "right" | "left" | "bottom" | "top" | "verticalCenter" | "horizontalCenter";
/**
 * Represents the main host object containing a stack of layers.
 *
 * This client-side class corresponds to the server-side class `Canvas` and provides access to its primary members in TypeScript.
 */
export declare class Canvas implements ICanvas, ICanvasDataSource {
    private _viewer;
    private _prevWorkspaceSize;
    private _selection;
    private _spotlightHandler;
    private _dndHandler;
    private _hoverHandler;
    private _rotateHandler;
    private _service;
    private _parent;
    private _document;
    private _violationContainersHandler;
    private _canvasRenderer;
    private _canvasElementHandler;
    private _textWhizz;
    private _fontRegistry;
    private _textRenderer;
    private _hitTestManager;
    private _rubberbandHandler;
    private _textEditor;
    private _clipboard;
    private _inputTextValidator;
    private _violationWarningButtonCssClass;
    private _goodViolationIconCssClass;
    private _warningViolationIconCssClass;
    private _violationBadIconCssClass;
    private _qualityChangeContainerCssClass;
    private _violationContainerCssClass;
    private _qualityChangeScaleBarCssClass;
    private _qualityBadToWarningChangeScaleBarCssClass;
    private _qualityWarningToGoodChangeScaleBarCssClass;
    private _qualityBadToGoodChangeScaleBarCssClass;
    private _qualityNoAnimationChangeScaleBarCssClass;
    private _qualityChangeInfoBarCssClass;
    private _placeholderButtonGroupCssClass;
    private _selectImageButtonCssClass;
    private _selectBarcodeButtonCssClass;
    private _doneButtonCssClass;
    private _handleButtonCssClass;
    private _bigButtonGroupCssClass;
    private _backgroundImage;
    private _background;
    private _initialization;
    private _initialized;
    private _zoom;
    private _workspaceWidth;
    private _workspaceHeight;
    private _suppressOutOfRegionManipulation;
    private _targetDpi;
    private _mouseMoveTimeout;
    private _disableSmoothing;
    private _selectionColor;
    private _selectionWidth;
    private _marginColor;
    private _marginWidth;
    private _leftMargin;
    private _rightMargin;
    private _topMargin;
    private _bottomMargin;
    private _ready;
    private _updateCalled;
    private _isRedrawPaused;
    private _redrawRequested;
    private _pause;
    private _maxFontSize;
    private _minFontSize;
    private _maxLeading;
    private _minLeading;
    private _constrainedMarginEnabled;
    private _keyEventEnabled;
    private _onSelectedItemHandlersDeletingDelegate;
    private _onSelectedItemHandlersChangedDelegate;
    private _textInputIssueUserConfirmationDelegate;
    private _tags;
    private _canvasElementSize;
    private _hiddenFieldID;
    private _status;
    private _layers;
    private _history;
    private _snapLinesHandler;
    private _floatingToolbarManager;
    private _autoPlaceholderEditModeEnabled;
    private _simpleMode;
    private _ignorePermissionsMode;
    private _offset;
    private _viewportHandler;
    private _textEditorRenderer;
    private _onScrollEvent;
    private _zoomChangedEvent;
    private _statusChangedEvent;
    private _callbackExceptionEvent;
    private _initializedEvent;
    private _invokingCallbackRequestEvent;
    private _currentItemHandlerChangedEvent;
    private _selectedItemHandlersChangedEvent;
    private _dragNDropDoneEvent;
    private _dragNDropStartingEvent;
    private _dragNDropPerformedEvent;
    private _readyEvent;
    private _workspaceSizeChangedEvent;
    private _layersUpdatedEvent;
    private _beforeReplaceItemHandlerEvent;
    private _afterReplaceItemHandlerEvent;
    private _onSelectionLockedEvent;
    private _lastLimitsEvent;
    private _errorInput;
    private _errorInputTimerId;
    readonly handlerFactory: HandlerFactoryByItem;
    translations: Translations;
    /** @internal */
    constructor(viewer: Viewer);
    get canvasItemHoverEnabled(): boolean;
    set canvasItemHoverEnabled(value: boolean);
    get canvasElementSize(): {
        width?: number;
        height?: number;
    };
    get floatingToolbarManager(): FloatingToolbarManager;
    get snapLinesHandler(): SnapLinesHandler;
    get hoverHandler(): HoverHandler;
    get selection(): SelectionHandler;
    get rubberbandHandler(): RubberbandHandler;
    get rotateHandler(): RotateHandler;
    get history(): History;
    set history(value: History);
    get viewerConfiguration(): IViewerConfiguration;
    set viewerConfiguration(config: IViewerConfiguration);
    get dndHandler(): DragNDropHandler;
    get hiddenFieldID(): string;
    set hiddenFieldID(value: string);
    get service(): Service;
    set service(value: Service);
    get viewer(): Viewer;
    get activeTextCanvasHandler(): IActiveTextCanvasHandler;
    get hitTestManager(): HitTestManager;
    get textWhizz(): typeof TextWhizz;
    get fontRegistry(): FontRegistry;
    get textEditor(): ITextEditor;
    set textEditor(value: ITextEditor);
    get textInputIssueUserConfirmationDelegate(): Func<Promise<boolean>, string>;
    get textRenderer(): TextRenderer;
    get simpleMode(): boolean;
    set simpleMode(value: boolean);
    get ignorePermissionsMode(): boolean;
    set ignorePermissionsMode(value: boolean);
    get offset(): PointF;
    set offset(value: PointF);
    get ready(): boolean;
    /** Gets an object containing numbers of lines, rectangles, ellipses, texts, images. */
    get tags(): any;
    /** Sets an object containing numbers of lines, rectangles, ellipses, texts, images. */
    set tags(tags: any);
    get width(): number;
    get height(): number;
    get keyEventEnabled(): boolean;
    set keyEventEnabled(v: boolean);
    get marginColor(): string;
    set marginColor(v: string);
    get marginWidth(): number;
    set marginWidth(v: number);
    get selectionColor(): string;
    set selectionColor(value: string);
    get selectionWidth(): number;
    set selectionWidth(value: number);
    get margin(): number;
    set margin(v: number);
    get leftMargin(): number;
    set leftMargin(v: number);
    get rightMargin(): number;
    set rightMargin(v: number);
    get topMargin(): number;
    set topMargin(v: number);
    get bottomMargin(): number;
    set bottomMargin(v: number);
    set constrainedMarginEnabled(v: boolean);
    get constrainedMarginEnabled(): boolean;
    get targetDpi(): number;
    set targetDpi(v: number);
    set suppressOutOfRegionManipulation(v: boolean);
    get suppressOutOfRegionManipulation(): boolean;
    set violationWarningButtonsEnabled(v: boolean);
    get violationWarningButtonsEnabled(): boolean;
    set qualityChangeContainersEnabled(v: boolean);
    get qualityChangeContainersEnabled(): boolean;
    get maxFontSize(): number;
    set maxFontSize(v: number);
    get minFontSize(): number;
    set minFontSize(v: number);
    get maxLeading(): number;
    set maxLeading(v: number);
    get minLeading(): number;
    set minLeading(v: number);
    get status(): UpdateStatus;
    /** @internal */
    get surfaceCanvas(): HTMLCanvasElement;
    get multipleSelectionEnabled(): boolean;
    set multipleSelectionEnabled(value: boolean);
    get mouseMoveTimeout(): number;
    set mouseMoveTimeout(value: number);
    get disableSmoothing(): boolean;
    set disableSmoothing(value: boolean);
    get previewMode(): boolean;
    set previewMode(value: boolean);
    set background(value: string);
    get background(): string;
    set backgroundImage(value: any);
    get workspaceWidth(): number;
    get workspaceHeight(): number;
    get initialization(): boolean;
    get rotationGripColor(): string;
    set rotationGripColor(v: string);
    get resizeGripColor(): string;
    set resizeGripColor(v: string);
    get rotationGripSize(): number;
    set rotationGripSize(v: number);
    get resizeGripSize(): number;
    set resizeGripSize(v: number);
    get resizeGripLineColor(): string;
    set resizeGripLineColor(value: string);
    get hoverColor(): string;
    set hoverColor(value: string);
    get rotationGripLineColor(): string;
    set rotationGripLineColor(value: string);
    get rotationGripLineLength(): number;
    set rotationGripLineLength(value: number);
    get placeholderButtonGroupCssClass(): string;
    set placeholderButtonGroupCssClass(value: string);
    get style(): CanvasRendererStyle;
    set style(value: CanvasRendererStyle);
    get violationContainerCssClass(): string;
    set violationContainerCssClass(value: string);
    get selectImageButtonCssClass(): string;
    set selectImageButtonCssClass(value: string);
    get selectBarcodeButtonCssClass(): string;
    set selectBarcodeButtonCssClass(value: string);
    get handleButtonCssClass(): string;
    set handleButtonCssClass(value: string);
    get doneButtonCssClass(): string;
    set doneButtonCssClass(value: string);
    get violationWarningButtonCssClass(): string;
    set violationWarningButtonCssClass(value: string);
    get qualityChangeContainerCssClass(): string;
    set qualityChangeContainerCssClass(value: string);
    get qualityChangeScaleBarCssClass(): string;
    set qualityChangeScaleBarCssClass(value: string);
    get qualityBadToWarningChangeScaleBarCssClass(): string;
    set qualityBadToWarningChangeScaleBarCssClass(value: string);
    get qualityWarningToGoodChangeScaleBarCssClass(): string;
    set qualityWarningToGoodChangeScaleBarCssClass(value: string);
    get qualityBadToGoodChangeScaleBarCssClass(): string;
    set qualityBadToGoodChangeScaleBarCssClass(value: string);
    get qualityNoAnimationChangeScaleBarCssClass(): string;
    set qualityNoAnimationChangeScaleBarCssClass(value: string);
    get qualityChangeInfoBarCssClass(): string;
    set qualityChangeInfoBarCssClass(value: string);
    get bigButtonGroupCssClass(): string;
    set bigButtonGroupCssClass(value: string);
    get goodViolationIconCssClass(): string;
    set goodViolationIconCssClass(value: string);
    get warningViolationIconCssClass(): string;
    set warningViolationIconCssClass(value: string);
    get badViolationIconCssClass(): string;
    set badViolationIconCssClass(value: string);
    get zoom(): number;
    set autoPlaceholderEditModeEnabled(value: boolean);
    get autoPlaceholderEditModeEnabled(): boolean;
    get selectionVisibleRectangle(): RotatedRectangleF;
    get currentItemHandler(): BaseRectangleItemHandler;
    get layers(): LayerCollection;
    set layers(v: LayerCollection);
    get parentElement(): HTMLElement;
    get inPlaceEditingHandler(): NewBaseTextItemHandler;
    get mul(): number;
    get contentUpdatingPlaceholderItemHandler(): PlaceholderItemHandler;
    get contentEditingPlaceholderItemHandler(): PlaceholderItemHandler;
    get selectedPlaceholderItemHandler(): PlaceholderItemHandler;
    get selectedHandler(): ItemHandler;
    get isInitialized(): boolean;
    get isUpdating(): boolean;
    get isSelectionLocked(): boolean;
    get isSelectionResizing(): boolean;
    get isSelectionRotating(): boolean;
    get isSelectionDragging(): boolean;
    get isSelectionIdle(): boolean;
    get designAtomsApiClient(): IDesignAtomsApiClient;
    get frontEndTextRenderingEnabled(): boolean;
    get productHandler(): ProductHandler;
    get lastLimitsEvent(): ILimitsViolationEventData;
    get errorInput(): boolean;
    get workspace(): IWorkspace;
    get renderingConfigProvider(): IRenderingConfigProvider;
    get contentAngle(): number;
    private get _drawSnapLines();
    setCursor(value: any, onBody: boolean): void;
    ensureFocus(): void;
    doesContainItem(item: Item): boolean;
    getItemHandler<THandler extends ItemHandler>(item: Item): THandler;
    deleteItemHandler(itemHandler: ItemHandler): void;
    isDragSource(itemHandler: ItemHandler): boolean;
    isDragTarget(itemHandler: ItemHandler): boolean;
    setTextWhizzModule(textWhizz: typeof TextWhizz): void;
    initTextEditor(textEditor: TextEditorMode, fontService: IFontService, useSimpleFontList: boolean, textInputIssueUserConfirmationDelegate: Func<Promise<boolean>, string>): void;
    waitUpdate(itemHandlers?: ItemHandler[]): Promise<void[]>;
    alignItemHandler(itemHandler: BaseRectangleItemHandler, align: AlignType): void;
    alignItemHandlers(align: AlignType): void;
    deleteSelectedItemHandlers(force?: boolean): void;
    getAllItemHandlers(options?: GetItemHandlersOptions): ItemHandler[];
    pauseUpdateTexts(): void;
    resumeUpdateTexts(): void;
    updateTexts(textToSkip?: any): void;
    setWorkspaceSize(width: number, height: number, updateButtonGroup?: boolean): void;
    setZoom(value: any, preventEvent?: boolean, options?: {
        force?: boolean;
        updateButtonGroup?: boolean;
        fullUpdate?: boolean;
    }): void;
    calcPlatformLimitZoom(): number;
    onScroll(): void;
    updateSelection(force?: boolean): void;
    getSelectedItemHandlers(): Collection<ItemHandler>;
    setSelectedItemHandlers(itemHandlers: BaseRectangleItemHandler[]): void;
    isItemHandlerSelected(itemHandler: any): boolean;
    isOnlyThisItemHandlerSelected(itemHandler: any): boolean;
    addSelectedItemHandler(itemHandler: any): void;
    removeSelectedItemHandler(itemHandler: any): void;
    clearSelectedItemHandlers(): void;
    onDragNDropStarting(data: any): void;
    onDragNDropDone(): void;
    onDragNDropPerformed(data: any): void;
    onSelectionLocked(): void;
    enableSelection(): void;
    disableSelection(): void;
    getData(forService?: boolean, layerId?: any): CanvasData;
    add_onScroll(h: any): void;
    remove_onScroll(h: any): void;
    add_zoomChanged(h: any): void;
    remove_zoomChanged(h: any): void;
    add_statusChanged(h: any): void;
    remove_statusChanged(h: any): void;
    add_callbackException(h: any): void;
    remove_callbackException(h: any): void;
    add_initialized(h: any): void;
    remove_initialized(h: any): void;
    add_invokingCallbackRequest(h: any): void;
    remove_invokingCallbackRequest(h: any): void;
    add_currentItemHandlerChanged(handler: (itemHandler: ItemHandler) => void): void;
    remove_currentItemHandlerChanged(handler: (itemHandler: ItemHandler) => void): void;
    add_selectedItemHandlerChanged(handler: (canvas: Canvas, itemHandler: ItemHandler) => void): void;
    remove_selectedItemHandlerChanged(handler: (canvas: Canvas, itemHandler: ItemHandler) => void): void;
    add_dragNDropDone(handler: (canvas: Canvas, itemHandler: ItemHandler) => void): void;
    remove_dragNDropDone(handler: any): void;
    add_dragNDropStarting(handler: any): void;
    remove_dragNDropStarting(handler: any): void;
    add_dragNDropPerformed(handler: any): void;
    remove_dragNDropPerformed(handler: any): void;
    add_ready(handler: any): void;
    remove_ready(handler: any): void;
    add_workspaceSizeChanged(handler: any): void;
    remove_workspaceSizeChanged(handler: any): void;
    add_layersUpdated(handler: any): void;
    remove_layersUpdated(handler: any): void;
    add_beforeReplaceItemHandler(handler: (eventArg?: ItemHandler) => any): void;
    remove_beforeReplaceItemHandler(handler: (eventArg?: ItemHandler) => any): void;
    add_afterReplaceItemHandler(handler: (eventArg?: ItemHandler) => any): void;
    remove_afterReplaceItemHandler(handler: (eventArg?: ItemHandler) => any): void;
    add_onSelectionLocked(handler: (eventArg?: Canvas) => any): void;
    remove_onSelectionLocked(handler: (eventArg?: Canvas) => any): void;
    updateViewport(): void;
    addViewport(viewportElement: HTMLDivElement): void;
    addElement(parentElement: any): void;
    addStyles(): void;
    showDnd(point: PointF, image: HTMLImageElement): void;
    hideDnd(): void;
    showSpotlight(items: Item[], options: ISpotlightOptions): void;
    hideSpotlight(items?: Item[]): void;
    /** @deprecated use showSpotlight() */
    updateSpotlight(items: Item[], options: ISpotlightOptions): void;
    showHover(item: Item): void;
    hideHover(): void;
    addPlaceholderButtonGroup(placeholder: PlaceholderItemHandler): void;
    removePlaceholderButtonGroup(placeholder: PlaceholderItemHandler): void;
    addViolationContainer(itemHandler: BaseRectangleItemHandler): void;
    removeViolationContainer(handler: BaseRectangleItemHandler): void;
    updateButtonGroups(options?: UpdateButtonGroupsOptions): void;
    updateViolationContainers(updatePosition?: boolean, onlyVisible?: boolean): void;
    updateViolationContainer(itemHandler: BaseRectangleItemHandler, updatePosition?: boolean): void;
    updateViolationContainerPosition(itemHandler: BaseRectangleItemHandler): void;
    updatePlaceholderButtonGroups(onlyVisible?: boolean): void;
    updatePlaceholderButtonGroup(placeholder: PlaceholderItemHandler | GroupItemHandler): void;
    updatePlaceholderButtonGroupPosition(placeholder: PlaceholderItemHandler): void;
    violationWarningButtonHitTestObject(pt: PointF): BaseRectangleItemHandler;
    getButtonGroupRectInGripsDiv(div: HTMLElement, ignoreRotate?: boolean): RectangleF;
    pauseRedraw(): void;
    continueRedraw(): void;
    redraw(): void;
    redrawSelection(): void;
    redrawActiveTexts(): void;
    subscribeLimitsMessage(): void;
    unsubscribeLimitsMessage(): void;
    redrawDesign: () => void;
    changeTextEditorDivOutlineColor(toRed: boolean): void;
    drawWaitClock(context: CanvasRenderingContext2D, center: PointF): void;
    drawTextCursor(callback: (context: CanvasRenderingContext2D) => void): void;
    clearTextCursor(): void;
    workspaceToControl(pt: PointF): PointF;
    controlToWorkspace(pt: PointF): PointF;
    isSelectionByHitTest(pt: PointF): boolean;
    initialize(): void;
    checkReady(): void;
    onLayerTextureLoaded(): void;
    dispose(): void;
    private _beginInitialization;
    private _endInitialization;
    private _onBeforeReplaceItemHandler;
    private _onAfterReplaceItemHandler;
    private _onHoverChanged;
    private _initContainersObservation;
    private _onItemRemoved;
    private _onContainersChanged;
    private _updateLayers;
    private _updateCanvasElementHandlerConf;
    private _getCanvasElementHandlerConf;
    private _onServiceImageContainerLoaded;
    private _setFontRegistry;
    private _createTextWhizzEditor;
    private _createMobileEditor;
    private _getClipboard;
    private _getInputTextValidator;
    private _deleteSelectedItemHandlersWithoutConfirm;
    private _canDeleteItemHandler;
    private _updateBackgroundStyle;
    private _updateCanvasElementSize;
    private _onCurrentItemHandlerChanged;
    private _removeElement;
    private _onTranslationsChanged;
    private _redraw;
    private _redrawSelectionCanvas;
    private _checkReady;
    private _updateWrappingRectangles;
    private _updateWrappingRectanglesWithoutTextWhizz;
    private _getItemHandlerWrappingRectangle;
    private _setRendererLoadingImageUrl;
    private _indexOfLayer;
    private _onTextLimitsEvent;
    private _ontextMetricsChanged;
    private _finishInputErrorMessage;
    private _onInteractiveZonesStateChanged;
}
