import { DragNDropHandler } from "./DragNDropHandler";
import { LayerCollection } from "./LayerCollection";
import { BaseRectangleItemHandler, PlaceholderItemHandler } from "./ItemHandlers";
import { PointF, RotatedRectangleF, RectangleF } from "@aurigma/design-atoms-model/Math";
import { Viewer } from "./Viewer";
import { RotateHandler } from "./RotateHandler";
import { TextAlignment, TextVerticalAlignment, Size } from "@aurigma/design-atoms-model/Product/Items";
import { SelectionHandler } from "./Services/Selection/SelectionHandler";
export interface ITextEditorElementHandler {
    addTextEditorStyles(css: string): void;
    textEditorDiv: HTMLElement;
    textEditorInnerDiv: HTMLElement;
    showTextEditor(rectangle: RotatedRectangleF, textAlignment: TextAlignment, html: string, borderWidth: number, borderColor: string, fillColor: string, opacity: number, verticalAlignment: TextVerticalAlignment, isVertical: boolean): void;
    hideTextEditor(): any;
    getTextEditorFormattedText(): string;
}
export interface IActiveTextCanvasHandler {
    moveActiveTextCanvasOnTop(): void;
    moveActiveTextCanvasBack(): void;
}
export declare class CanvasElementHandler implements ITextEditorElementHandler, IActiveTextCanvasHandler {
    private _viewer;
    private _selection;
    private _dndHandler;
    private _rotateHandler;
    private _config;
    private _document;
    private _parent;
    private _whitespace;
    private _childrenToAdd;
    private _dndDiv;
    private _dndStyle;
    private _buttonStyle;
    private _textEditorDiv;
    private _textEditorInnerDiv;
    private readonly _staticTextCanvasId;
    staticTextCanvas: HTMLCanvasElement;
    private _offset;
    get offset(): PointF;
    set offset(value: PointF);
    constructor(_viewer: Viewer, _selection: SelectionHandler, _dndHandler: DragNDropHandler, _rotateHandler: RotateHandler, config: ICanvasElementHandlerConfiguration);
    setConf(conf: ICanvasElementHandlerConfiguration): void;
    private get _canvas();
    addStyles(): void;
    private _addButtonStyles;
    private _addDndStyle;
    addTextEditorStyles(css: string): void;
    private _addStaticTextCanvas;
    private _viewportDiv;
    private _viewportSurfaceCanvas;
    private _viewportInactiveCanvas;
    private _viewportActiveCanvas;
    private _viewportDesignCanvas;
    private _viewportActiveTextCanvas;
    private _viewportCursorCanvas;
    private _viewportSelectionCanvas;
    private _viewportTextureCanvas;
    private _viewportMemoryCanvas;
    get viewportSurfaceCanvas(): HTMLCanvasElement;
    get viewportInactiveCanvas(): HTMLCanvasElement;
    get viewportActiveCanvas(): HTMLCanvasElement;
    get viewportDesignCanvas(): HTMLCanvasElement;
    get viewportActiveTextCanvas(): HTMLCanvasElement;
    get viewportCursorCanvas(): HTMLCanvasElement;
    get viewportSelectionCanvas(): HTMLCanvasElement;
    get viewportTextureCanvas(): HTMLCanvasElement;
    get viewportMemoryCanvas(): HTMLCanvasElement;
    private _appendViewportCanvas;
    addViewport(viewport: HTMLDivElement): void;
    private _createViewportCanvas;
    updateViewport(): void;
    private _updateViewportCanvas;
    removeViewport(): void;
    addElement(parent: HTMLElement, whitespace: HTMLElement, width: number, height: number): void;
    replaceStaticTextCanvas(): HTMLCanvasElement;
    createCanvas(size: Size): HTMLCanvasElement;
    removeElement(): void;
    updateElementSize(width: number, height: number, fullUpdate?: boolean): void;
    moveActiveTextCanvasOnTop(): void;
    moveActiveTextCanvasBack(): void;
    private _addDndDiv;
    private _removeDndDiv;
    showDnd(point: PointF, image: HTMLImageElement, angle: number): void;
    hideDnd(): void;
    addChild: (element: HTMLElement) => void;
    removeChilds(element: HTMLElement): void;
    addPlaceholderButtonGroup(placeholder: PlaceholderItemHandler, viewer: Viewer): void;
    removePlaceholderButtonGroup(placeholder: PlaceholderItemHandler): void;
    updatePlaceholderButtonGroup(placeholder: PlaceholderItemHandler, viewer: Viewer): void;
    updatePlaceholderButtonGroupPosition(placeholder: PlaceholderItemHandler, viewer: Viewer): void;
    addViolationContainer(itemHandler: BaseRectangleItemHandler, viewer: Viewer): void;
    removeViolationContainer(handler: BaseRectangleItemHandler): void;
    updateViolationContainer(itemHandler: BaseRectangleItemHandler, updatePosition: boolean, viewer: Viewer): void;
    private _showQualityChangeContainer;
    updateViolationContainerPosition(itemHandler: BaseRectangleItemHandler, viewer: Viewer): void;
    private readonly _textEditorId;
    private _addTextEditorDiv;
    private _removeTextEditorDiv;
    private _onZoomedScrolledDelegate;
    private _appendTextEditorDivToDom;
    private _removeTextEditorDivFromDom;
    get textEditorDiv(): HTMLElement;
    get textEditorInnerDiv(): HTMLElement;
    showTextEditor(rectangle: RotatedRectangleF, textAlignment: TextAlignment, html: string, borderWidth: number, borderColor: string, fillColor: string, opacity: number, textVerticalAlignment: TextVerticalAlignment, isVertical: boolean): void;
    private _getOutlineStyleFromDashPattern;
    changeTextEditorDivOutlineColor(toRed: boolean): void;
    hideTextEditor(): void;
    getTextEditorFormattedText(): string;
    private _updateTextEditorPosition;
    calculateRenderStateForItemHandlers(layers: LayerCollection): boolean;
    private setHandlerState;
    private _createCanvasElement;
    static setElementSize(element: HTMLCanvasElement, width: number, height: number, fullUpdate?: boolean): void;
    static showElement(element: HTMLElement, withoutAnimation?: boolean): void;
    static hideElement(element: HTMLElement, withoutAnimation?: boolean): void;
    private _stopPropagationFnc;
    private _isPlaceholder;
    private _isImage;
    private _isGroup;
    private _isImageOrPlaceholder;
    private _getSelectButtonTitle;
    static getControlRectangle(rectangle: RotatedRectangleF, viewer: Viewer): RectangleF;
    private get _isDefaultInputHandler();
    static rotateRectangle(rectangle: RotatedRectangleF, viewer: Viewer): RotatedRectangleF;
}
export interface ICanvasElementHandlerConfiguration {
    handleButtonEnabled: boolean;
}
