import { ItemHandler } from "./ItemHandler";
import { BaseRectangleItemHandler } from "./BaseRectangleItemHandler";
import { RotatedRectangleF } from "@aurigma/design-atoms-model/Math";
import { Item, GroupItem } from "@aurigma/design-atoms-model/Product/Items";
import { Collection } from "@aurigma/design-atoms-model/Collection";
import * as TextWhizz from "@aurigma/text-whizz/TextWhizzJS";
import { IGetHighlightRectanglesOptions } from "./Interfaces/IGetHighlightRectanglesOptions";
import { Color } from "@aurigma/design-atoms-model";
import { Permission } from "../Permission";
import { ICanvas } from "../ICanvas";
export type HandlerUpdateFunc = (handler: ItemHandler) => boolean;
export interface IContainerItemHandler {
    updateNestedItemHandlers(updateFunc: HandlerUpdateFunc): boolean;
}
export declare function isIContainerItemHandler(object: any): object is IContainerItemHandler;
export declare class GroupItemHandler extends BaseRectangleItemHandler implements IContainerItemHandler {
    static readonly typeName: string;
    constructor(item: GroupItem, itemHandlers?: ItemHandler[], textWhizz?: typeof TextWhizz);
    isHighlightNeeded(): boolean;
    protected _getColors(): Color[];
    private _unsubscribeItemHandlers;
    private _subscribeItemHandlers;
    setItemHandlers(itemHandlers: ItemHandler[]): void;
    private _itemHandlers;
    get itemHandlers(): Collection<ItemHandler>;
    set itemHandlers(value: Collection<ItemHandler>);
    drawItemHandler(itemHandlerCtx: CanvasRenderingContext2D): void;
    protected _getChildrenHighlights(): RotatedRectangleF[];
    getHighlightRectangles(options?: IGetHighlightRectanglesOptions): RotatedRectangleF[];
    getOrderedItems(): Item[];
    protected _onChildItemHandlerChanging: (sender: Item) => void;
    protected _onItemPropertyChanged(sender: GroupItem, propertyName: string): void;
    protected _onItemAdded(data?: {
        item: Item;
        index: number;
    }): void;
    protected _onItemRemoved(data?: {
        item: Item;
        index: number;
    }): void;
    private _isPermissionsProperty;
    protected _onChildItemPropertyChanged(sender: Item, property: string): void;
    protected _onItemHandlerAdded(data?: {
        item: ItemHandler;
        index: number;
    }): void;
    protected _onItemHandlerRemoved(data?: {
        item: ItemHandler;
        index: number;
    }): void;
    replaceItemHandler(oldHandler: ItemHandler, newHandler: ItemHandler): void;
    getNestedItemHandlers(excludeGroupItems?: boolean, reversedZorder?: boolean, onlyVisible?: boolean): ItemHandler[];
    updateNestedItemHandlers(updateFunc: HandlerUpdateFunc): boolean;
    protected _onTransformRectangle(startRectangle: RotatedRectangleF, endRectangle: RotatedRectangleF, highlightOnly: boolean): void;
    protected _updateImpl(): Promise<void>;
    quickUpdate(): void;
    onResized(): boolean;
    startTransform(): void;
    _endTransform(changed: any, resized: any, supressOnChanged?: boolean): void;
    transformChanged(): void;
    setRectangle(rectangle: RotatedRectangleF, supressOnChanged?: boolean): void;
    protected get _calculateRectangleFromChild(): boolean;
    protected _getRectangle(): RotatedRectangleF;
    protected _getRectangleFromChildren(): RotatedRectangleF;
    protected _onAddedOnCanvas(canvas: ICanvas): void;
    protected _onRemovedFromCanvas(canvas: ICanvas): void;
    applyToItems(func: (handler: ItemHandler) => any): void;
    _cachedPermissions: Permission;
    getPermissions(): Permission;
    resetPermissions(): void;
    isChildVisible(itemHandler: ItemHandler): boolean;
    get item(): GroupItem;
    private _resetPermissionsCache;
}
