import { Utils } from "../Utils/Common";
import { WebServiceCallType } from "../Utils/Common";
import { EventWithSenderArg, EventObject } from "@aurigma/design-atoms-model/EventObject";
import { Layer } from "../Layer";
import { IPermissions, Permission } from "../Permission";
import { PointF, RectangleF, Path } from "@aurigma/design-atoms-model/Math";
import { ItemHandlerData } from "./ItemHandlerData";
import { Item, BlendMode } from "@aurigma/design-atoms-model/Product/Items";
import { RenderState } from "./RenderState";
import { Deferred } from "../Utils/Deferred";
import { GroupItemHandler } from "./GroupItemHandler";
import { ICanvasRenderer } from "../ICanvasRenderer";
import { Color } from "@aurigma/design-atoms-model";
import { ICanvas } from "../ICanvas";
import { IHitTestResult } from "../Services";
export interface IGroupHandler {
    isChildVisible(childItemHandler: ItemHandler): any;
}
export declare class ItemHandler {
    static readonly typeName: string;
    private _layer;
    private _canvas;
    private _afterUpdateCallbacks;
    private _renderState;
    private _activeWebServiceCall;
    private _activeColorWebServiceCall;
    private _modelItem;
    private _skipPropertyChanged;
    private _skippedPropertyName;
    private _visible;
    private _locked;
    private _updating;
    private _isCurrentWebServiceCallForAll;
    private _changeItemOnUpdate;
    /**
     * Fires when v-object's ready property sets to true.
     */
    private _readyEvent;
    /**
     * Fires when v-object was modified (after the end of an operation).
     */
    private _changedEvent;
    /**
     * Fires before v-object is being modified (before the start of an operation).
     */
    private _changingEvent;
    protected _handlerUpdated: Deferred<void>;
    protected _itemPropertyChangedEvent: EventWithSenderArg<ItemHandler, string>;
    protected _isDisposed: boolean;
    protected _controlPoints: PointF[];
    protected _tag: any;
    protected _permissions: Permission;
    protected _uniqueId: string;
    protected _callbacks: any[];
    protected _transformOperation: IHitTestResult;
    protected _throttleSizeChanging: any;
    constructor(item?: Item);
    set item(item: Item);
    get item(): Item;
    get ready(): boolean;
    get isLoadingImage(): boolean;
    set isLoadingImage(value: boolean);
    get uniqueId(): string;
    set uniqueId(v: string);
    get renderState(): RenderState;
    set renderState(v: RenderState);
    get parentGroupItemHandler(): GroupItemHandler;
    get blendMode(): BlendMode;
    get controlPoints(): PointF[];
    set controlPoints(v: PointF[]);
    get tag(): any;
    set tag(v: any);
    get canvas(): ICanvas;
    set canvas(value: ICanvas);
    get layer(): Layer;
    set layer(v: Layer);
    get index(): number;
    get bounds(): RectangleF;
    get name(): string;
    set name(v: string);
    get visible(): boolean;
    set visible(v: boolean);
    get locked(): boolean;
    set locked(v: boolean);
    get isNormalRenderingType(): boolean;
    get isUpdating(): boolean;
    get changeItemOnUpdate(): boolean;
    set changeItemOnUpdate(value: boolean);
    private get _colorSettings();
    static isGroupHandler(itemHandler: any): itemHandler is IGroupHandler;
    isHighlightNeeded(): boolean;
    hasBlendMode(): boolean;
    getPermissions(): Permission;
    resetPermissions(): void;
    getTypeName(): string;
    getData(type: "asObject"): ItemHandlerData;
    getData(): string;
    updateItem(item: Item): void;
    setData(v: any): void;
    isVisible(): boolean;
    isEmpty(): boolean;
    isLocked(): boolean;
    processEvent(e: any): void;
    hitTest(point: PointF): IHitTestResult;
    draw(itemHandlerCtx: CanvasRenderingContext2D, clippingPath: Path, textureCanvas: HTMLCanvasElement, textureCanvasCtx: CanvasRenderingContext2D, memoryCanvas: HTMLCanvasElement, memoryCanvasCtx: CanvasRenderingContext2D, canvasRenderer: ICanvasRenderer, isMasked: boolean): void;
    drawItemHandler(itemHandlerCtx: CanvasRenderingContext2D, originalCtx?: CanvasRenderingContext2D): void;
    quickUpdate(): void;
    update(beforeUpdate?: Function, afterUpdate?: Function): void;
    updateAsync(beforeUpdate?: Function, afterUpdate?: Function): Promise<void>;
    updateForExternalCanvas(canvas: ICanvas): void;
    updateActiveColorWebServiceCall(callPromise: Utils.ICancelablePromise<any>, updateForAll: boolean): Promise<void>;
    startTransform(operation?: IHitTestResult): void;
    endTransform(changed: boolean, resized: boolean, supressOnChanged?: boolean): void;
    waitUpdate(): Promise<void>;
    beginUpdate(): void;
    endUpdate(): void;
    updated(): void;
    addReady(handler: (sender: ItemHandler) => any): void;
    removeReady(handler: (sender: ItemHandler) => any): void;
    addChanging(handler: (sender: Item) => any): void;
    removeChanging(handler: (sender: Item) => any): void;
    raiseChanging(param?: Item): void;
    getChangingEvent(): EventObject<Item>;
    addChanged(handler: (sender: ItemHandler) => any): void;
    removeChanged(handler: (sender: ItemHandler) => any): void;
    raiseChanged(): void;
    getChangedEvent(): EventObject<ItemHandler>;
    addItemPropertyChanged(handler: (sender: ItemHandler, propertyName: string) => any): void;
    removeItemPropertyChanged(handler: (sender: ItemHandler, propertyName: string) => any): void;
    initialize(): void;
    onSuccessResponse(activeCall?: WebServiceCallType): void;
    onErrorResponse(error: any, activeCall?: WebServiceCallType): void;
    validateActiveColorWebServiceCall(): void;
    getColors(): Color[];
    dispose(): void;
    protected _isReady(): boolean;
    protected _getColors(): Color[];
    protected _updateImpl(beforeUpdate?: Function, afterUpdate?: Function): Promise<void>;
    protected transformChanged(): void;
    protected _createDataInstance(itemHandler?: ItemHandler): ItemHandlerData;
    protected _getDataItem(): string;
    protected _applyDataItem(item: any, itemHandlerData: any): void;
    protected _setDataItem(item: Item, itemHandlerData: any): void;
    protected _modifyItem(modify: (i: Item) => void): void;
    protected _refreshState(): void;
    protected _onAddedOnCanvas(canvas: ICanvas, supressUpdate?: boolean): void;
    protected _onRemovedFromCanvas(canvas: any): void;
    protected _validateBeforeCallService(): boolean;
    protected _update(additionalArgs: any, beforeUpdate: any, afterUpdate: any): void;
    protected _callService(methodName: any, data: any, success: any, failure: any, externalCanvas: ICanvas): void;
    protected _updateActiveWebServiceCall(callPromise: Utils.ICancelablePromise<any>): Promise<void>;
    protected _getDefaultPermissions(): IPermissions;
    protected _getItemPermissions(): IPermissions;
    protected _isIgnorePermissionsMode(): boolean;
    protected _isLoadingImage(): boolean;
    protected _setIsLoadingImage(value: boolean): void;
    protected _dispatchReadyEvent(): void;
    protected _updateVisibility(): void;
    protected _subscribeItemEvents(): void;
    protected _unsubscribeItemEvents(): void;
    protected _onItemPropertyChanged(sender: Item, propertyName: string): void;
    protected _onItemVisibilityChanged(): void;
    protected _getItem(): Item;
    protected _setItem(item: Item): void;
    protected _onValidateBeforeCallServiceFailed(): void;
    protected _isGroupHandler(): boolean;
    private _serverSideUpdate;
    private _convertBlendModeToGlobalOperation;
    private _cancelWebServiceCall;
    private _createItemHandlerPermissions;
    private _baseOnItemPropertyChanged;
    private _createUniqueID;
    private _getCallService;
}
