import { EventWithAutoSenderArg, EventWithSenderArg } from "@aurigma/design-atoms-model/EventObject";
import { ItemHandler } from "./ItemHandler";
import { Item } from "@aurigma/design-atoms-model/Product/Items";
import { RotatedRectangleF, PointF, RectangleF, Matrix, Path, Transform } from "@aurigma/design-atoms-model/Math";
import * as TextWhizz from "@aurigma/text-whizz/TextWhizzJS";
import { IHitTestResult } from "../Services/IHitTestResult";
import { IGetHighlightRectanglesOptions } from "./Interfaces/IGetHighlightRectanglesOptions";
import { IListenableColorPreviewService, IPreviewLoadedEventArgs } from "../Services/IColorPreviewService";
import { ICanvas } from "../ICanvas";
export declare class BaseRectangleItemHandler extends ItemHandler {
    protected _textWhizz: typeof TextWhizz;
    private _transformChanging;
    private _vectorMaskCenter;
    protected _controlPoints: PointF[];
    protected _startRectangle: RotatedRectangleF;
    protected _allowNegativeResize: boolean;
    protected _selectionTolerance: number;
    protected _violationWarningButton: HTMLElement;
    protected _violationWarningButtonClickHandler: any;
    protected _violationWarningButtonClickEvent: EventWithSenderArg<unknown, unknown>;
    protected _violationWarningButtonClick: EventWithSenderArg<this, Event>;
    protected _doubleClickEvent: EventWithSenderArg<this, any>;
    protected _clickEvent: EventWithSenderArg<this, any>;
    protected _violationContainer: HTMLElement;
    protected _colorPreviewService: IListenableColorPreviewService;
    static readonly typeName: string;
    constructor(left?: number, top?: number, width?: number, height?: number, item?: Item, _textWhizz?: typeof TextWhizz, colorPreviewService?: IListenableColorPreviewService);
    get allowNegativeResize(): boolean;
    get transformChanging(): EventWithAutoSenderArg<BaseRectangleItemHandler, any>;
    get rectangle(): RotatedRectangleF;
    get bounds(): RectangleF;
    get drawingRectangle(): RotatedRectangleF;
    get angle(): number;
    set angle(angle: number);
    get height(): number;
    set height(height: number);
    get width(): number;
    set width(width: number);
    get startRectangle(): RotatedRectangleF;
    static transformRectangleByTwoRectanglesDiff(rectangle: RotatedRectangleF, startRectangle: RotatedRectangleF, endRectangle: RotatedRectangleF): RotatedRectangleF;
    setRectangle(rectangle: RotatedRectangleF, supressOnChanged?: boolean): void;
    getControlBounds(): RectangleF;
    getControlCenter(): PointF;
    transformByMatrix(matrix: Matrix, finished: boolean, newAngle?: number): void;
    getTransformedRectangle(relativeToPrintArea?: boolean, withMargins?: boolean): RotatedRectangleF;
    setTransformedRectangle(value: RotatedRectangleF, suppressOnChanged?: boolean): void;
    getTextWrappingPath(): Path;
    setLocation(location: PointF): void;
    onTextWhizzInit(): void;
    hitTest(point: PointF): IHitTestResult;
    addViolationWarningButtonClick(handler: (handler: BaseRectangleItemHandler) => void): void;
    removeViolationWarningButtonClick(handler: (handler: BaseRectangleItemHandler) => void): void;
    getViolationWarningButton(): HTMLElement;
    setViolationWarningButton(value: any): void;
    getViolationWarningButtonClickHandler(): any;
    getViolationContainer(): HTMLElement;
    setViolationContainer(value: any): void;
    getViolationWarningButtonElement(): HTMLElement;
    transformRectangle(startRectangle: RotatedRectangleF, endRectangle: RotatedRectangleF, highlightOnly?: boolean): void;
    startTransform(operation?: IHitTestResult): void;
    endTransform(changed: boolean, resized: boolean, supressOnChanged?: boolean): void;
    transformChanged(): void;
    onResized(): boolean;
    dispatchDoubleClickEvent(e: any): void;
    addDoubleClick(handler: (sender?: BaseRectangleItemHandler, e?: any) => any): void;
    removeDoubleClick(handler: (sender?: BaseRectangleItemHandler, e?: any) => any): void;
    dispatchClickEvent(e: any): void;
    addClick(handler: (sender?: BaseRectangleItemHandler, e?: any) => any): void;
    removeClick(handler: (sender?: BaseRectangleItemHandler, e?: any) => any): void;
    getHighlightRectangles(options?: IGetHighlightRectanglesOptions): RotatedRectangleF[];
    getSelectionRectangle(): RotatedRectangleF;
    getBorderMargin(): number;
    getSelectionTolerance(): number;
    showDeleteToolbarButton(): boolean;
    showHandleToolbarButton(): boolean;
    showEditToolbarButton(): boolean;
    showSelectToolbarButton(): boolean;
    updateViolationContainerPosition(): void;
    isGoodViolationIcon(): boolean;
    setGoodViolationIcon(title: string): boolean;
    isWarningViolationIcon(): boolean;
    setWarningViolationIcon(title?: string): void;
    isBadViolationIcon(): boolean;
    setBadViolationIcon(title?: string): void;
    isNoneViolationIcon(): boolean;
    setNoneViolationIcon(): void;
    protected _isReady(): boolean;
    protected get _areColorPreviewsReady(): boolean;
    protected get _isReadyToDraw(): boolean;
    protected _updateImpl(beforeUpdate?: Function, afterUpdate?: Function): Promise<void>;
    protected _getItemColorPreviews(): {};
    protected _onColorPreviewLoaded: (args: IPreviewLoadedEventArgs) => void;
    protected _getHighlightRectangle(): RotatedRectangleF;
    protected _updateVisibility(): void;
    protected _onViolationWarningButtonClick(e: Event): void;
    protected _updateViolationContainersVisibility(): void;
    protected _endTransform(changed: boolean, resized: boolean, supressOnChanged?: boolean): void;
    protected _calculateTransformedRectangle(startRectangle: RotatedRectangleF, endRectangle: RotatedRectangleF): RotatedRectangleF;
    protected _onTransformRectangle(startRectangle: RotatedRectangleF, endRectangle: RotatedRectangleF, highlightOnly: boolean): void;
    protected _onAddedOnCanvas(canvas: ICanvas, supressUpdate?: boolean): void;
    protected _onRemovedFromCanvas(canvas: ICanvas): void;
    protected _getRectangle(): RotatedRectangleF;
    protected _applyMatrix: (matrix: Matrix, finished: boolean, newAngle?: number) => void;
    protected _getBoundsMargin(): number;
    protected _clip(itemHandlerCtx: any): void;
    protected _onItemPropertyChanged(sender: Item, propertyName: string): void;
    protected _onItemVisibilityChanged(): void;
    protected _updateVectorMaskCenter(): Promise<void>;
    protected _updateVectorMaskCenterSync(): void;
    protected _getTransformedClippingPath(transform?: Transform): Path;
    protected _hasVectorMask(): boolean;
    protected _refreshState(): void;
    private _showViolationButton;
    private _getPrintAreaBounds;
}
