import { Collection } from "@aurigma/design-atoms-model/Collection";
import { RotatedRectangleF, ILtrb, RectangleF, PointF } from "@aurigma/design-atoms-model/Math";
import { ManipulationPermissions } from "@aurigma/design-atoms-model/Product/Items";
import { AnyFunction } from "@aurigma/design-atoms-model/Utils/Types";
import { IRotateByPointParams, IMoveByPointParams, IResizeByPointParams, IMoveParams } from "./SelectionRectangleHandler";
import { SelectionHitTestManager } from "../SelectionHitTestManager";
import { BaseRectangleItemHandler } from "../../ItemHandlers";
import { HitTestManager } from "../HitTestManager";
import { Canvas } from "../../Canvas";
import { InputState } from "../../Input/InputManager/IInputManager";
import { ISelectionOptions } from "./ISelectionOptions";
import { SnapLinesHandler } from "../../Viewer/SnapLinesHandler";
import { IInteractiveZonesHandler } from "../../Viewer/Interfaces/IInteractiveZonesHandler";
import { ISelectionHandler, RectangleSignsType } from "./ISelectionHandler";
export declare class SelectionHandler implements ISelectionHandler {
    private _canvas;
    private _snapLinesHandler;
    private _interactiveZonesHandler;
    private _selectionRectangleHandler;
    private _selectionProcessModifier;
    private _selectionHitTestManager;
    private _itemHandlers;
    private _rectangle;
    private _parentSelectionRectangle;
    private _multipleSelectionEnabled;
    private _currentItemHandler;
    private _enabled;
    private _border;
    private _skipUpdate;
    private _locked;
    private _state;
    private _region;
    private _ignoreSimpleMode;
    private _manipulationPermissions;
    private _resizeIndex?;
    private _rectangleSigns;
    static readonly cw: number[];
    static readonly ch: number[];
    constructor(hitTestManager: HitTestManager, _canvas: Canvas, _snapLinesHandler: SnapLinesHandler, _interactiveZonesHandler: IInteractiveZonesHandler);
    get enabled(): boolean;
    get selectedItemHandlers(): Collection<BaseRectangleItemHandler>;
    get currentItemHandler(): BaseRectangleItemHandler;
    get selectionHitTestManager(): SelectionHitTestManager;
    get locked(): boolean;
    get border(): ILtrb;
    get rectangle(): RotatedRectangleF;
    get parentRectangle(): RotatedRectangleF;
    get region(): RectangleF;
    get resizeIndex(): number;
    set ignoreSimpleMode(value: boolean);
    private _setRectangle;
    get multipleSelectionEnabled(): boolean;
    set multipleSelectionEnabled(value: boolean);
    lock(saveSelectedItems?: boolean): void;
    unlock(): void;
    enable(): void;
    disable(): void;
    rotateByPoint(args: IRotateByPointParams, state: InputState, startPoint?: PointF): void;
    moveByPoint(args: IMoveByPointParams, state: InputState, ignoreSnapLines: boolean, startPoint?: PointF): void;
    resizeByPoint(args: IResizeByPointParams, state: InputState, startPoint?: PointF): void;
    private _notifyItemHandlersChanged;
    move(args: IMoveParams, state: InputState): void;
    isItemHandlerSelected(itemHandler: BaseRectangleItemHandler): boolean;
    isOnlyThisItemHandlerSelected(itemHandler: BaseRectangleItemHandler): boolean;
    setSelectedItemHandlers(itemHandlers: BaseRectangleItemHandler[], dontClean?: boolean): void;
    private _cancelEditMode;
    clearSelectedItemHandlers(): void;
    addSelectedItemHandler(itemHandler: BaseRectangleItemHandler): void;
    removeSelectedItemHandler(itemHandler: BaseRectangleItemHandler): void;
    update(force?: boolean): void;
    private _update;
    private _updateParentSelectionRectangle;
    private _getRegion;
    getSelectionDrawingParams(): ISelectionOptions;
    getHighlightRectangles(): RotatedRectangleF[];
    get visibleRectangle(): RotatedRectangleF;
    get rectangleSigns(): RectangleSignsType;
    private _getVisibleSelectionRectangle;
    private _updatePermissions;
    get manipulationPermissions(): ManipulationPermissions;
    get allowManipulation(): boolean;
    get allowMove(): boolean;
    private get _allowNegativeResize();
    private _selectionChanged;
    addOnSelectionChanged(handler: () => any): void;
    removeOnSelectionChanged(handler: () => any): void;
    private _onSelectionItemHandlersChanged;
    private _selectionRectangleChanged;
    private _selectionStateChanged;
    private _selectionAngleChanged;
    private _selectionMoved;
    private _selectionResized;
    private _getHistoryUpdateMode;
    private get _items();
    private _onItemHandlersItemAdded;
    private _onItemHandlersItemRemoved;
    private _onSelectedItemHandlerChanged;
    addSelectedItemHandlersChanged: (handler: AnyFunction) => void;
    removeSelectedItemHandlersChanged: (handler: AnyFunction) => void;
    private _fillSnapData;
    dispose(): void;
    private _currentItemChangedEvent;
    addCurrentItemChanged(listener: (item: BaseRectangleItemHandler) => void): void;
    removeCurrentItemChanged(listener: (item: BaseRectangleItemHandler) => void): void;
    get isIdle(): boolean;
    get isResizing(): boolean;
    get isRotating(): boolean;
    get isDragging(): boolean;
}
export declare enum SelectionState {
    Idle = 0,
    Select = 1,
    Drag = 2,
    Resize = 3,
    Rotate = 4
}
export declare class ResizeHelper {
    static isLeftResizeGrip(index: number): boolean;
    static isTopResizeGrip(index: number): boolean;
    static isRightResizeGrip(index: number): boolean;
    static isBottomResizeGrip(index: number): boolean;
    static isCornerResizeGrip(index: number): boolean;
    static isEdgeResizeGrip(index: number): boolean;
}
