import { EventWithSenderArg } from "@aurigma/design-atoms-model/EventObject";
import { ContentItemHandler } from "./ContentItemHandler";
import { PlaceholderItemHandler } from "./PlaceholderItemHandler";
import { ImageHandlerData } from "./ImageHandlerData";
import { ImageItem, ResizeMode, ImageEffect } from "@aurigma/design-atoms-model/Product/Items";
import * as TextWhizz from "@aurigma/text-whizz/TextWhizzJS";
import { IPermissions } from "../Permission";
import { IListenableColorPreviewService } from "../Services/IColorPreviewService";
import { IDesignAtomsApiClient } from "../Services/IDesignAtomsApiClient";
import { Color } from "@aurigma/design-atoms-model";
export { ImageEffect };
export declare type ImageLoadOpions = {
    downloadToServerCache?: boolean;
    actualSize?: boolean;
    saveAspectRatio?: boolean;
};
export declare class ImageItemHandler extends ContentItemHandler {
    private _sourceImageHorizontalResolution;
    private _sourceImageVerticalResolution;
    private _maxImageSize;
    protected _saveAspectRatio: boolean;
    protected _actualSize: boolean;
    protected _takeIntoAccountImageDpi: boolean;
    protected _sourceUrl: string;
    protected _qualityChangeContainer: HTMLElement;
    protected _qualityChangeScaleBar: HTMLElement;
    protected _qualityChangeInfoBar: HTMLElement;
    protected _imageResizedEvent: EventWithSenderArg<this, IImageResizedData>;
    static readonly typeName: string;
    constructor(item?: ImageItem, textWhizz?: typeof TextWhizz, apiClient?: IDesignAtomsApiClient, colorPreviewService?: IListenableColorPreviewService);
    get item(): ImageItem;
    set item(item: ImageItem);
    get needToDownloadImage(): boolean;
    set needToDownloadImage(v: boolean);
    get takeIntoAccountImageDpi(): boolean;
    set takeIntoAccountImageDpi(v: boolean);
    get sourceImageHorizontalResolution(): number;
    set sourceImageHorizontalResolution(value: number);
    get sourceImageVerticalResolution(): number;
    set sourceImageVerticalResolution(value: number);
    get qualityChangeScaleBar(): HTMLElement;
    set qualityChangeScaleBar(v: HTMLElement);
    get qualityChangeInfoBar(): HTMLElement;
    set qualityChangeInfoBar(v: HTMLElement);
    get qualityChangeContainer(): HTMLElement;
    set qualityChangeContainer(v: HTMLElement);
    get isQualityChangeBarEmpty(): boolean;
    /**
     * Loads an image from the external source using the specified parameters.
     * @param sourceUrl The URL to load image from.
     * @param options.actualSize  specifies whether a size of the image item should be same as a size of loaded image
     * @param options.saveAspectRatio  specifies whether to decrease width or height of the ImageItemHandler to save aspect ratio of loaded image.
     * @param options.downloadToServerCache  specifies whether the bitmap should be loaded to the private cache
     * @returns storage id of loaded image
     */
    loadImage(sourceUrl: string, options?: ImageLoadOpions): Promise<string>;
    loadImageFromRemoteUrl(remoteUrl: string, appDomainUrl?: string): Promise<void>;
    showEditButton(): boolean;
    addImageResized(handler: (sender?: ImageItemHandler, data?: IImageResizedData) => any): void;
    removeImageResized(handler: (sender?: ImageItemHandler, data?: IImageResizedData) => any): void;
    onResized(): boolean;
    setQualityChangeScaleBarWidth(progress: number): void;
    setQualityChangeInfoBarText(value: string): void;
    setBadToWarningChangeScaleBarClass(): void;
    setWarningToGoodChangeScaleBarClass(): void;
    setBadToGoodChangeScaleBarClass(): void;
    updateRectangle(keepLocation?: boolean, resizeMode?: ResizeMode, parentPlaceholder?: PlaceholderItemHandler, hiResOutputDpi?: number): void;
    protected _updateImpl(beforeUpdate?: Function, afterUpdate?: Function): Promise<void>;
    protected _getDrawingFillColor(): Color;
    protected _setDataItem(item: ImageItem, itemHandlerData: any): void;
    protected _onItemPropertyChanged(sender: ImageItem, propertyName: string): void;
    protected _getDefaultPermissions(): IPermissions;
    protected _createDataInstance(itemHandler?: ImageItemHandler): ImageHandlerData;
    protected _updateImageUrl(): void;
    protected _createImageUrl(): string;
}
export interface IImageResizedData {
    Width: number;
    Height: number;
}
