import * as PIXI from "pixi.js-legacy";
import * as MedsurfDraw from "../../public-api";
import * as Models from '@ascii-dev-user/medsurf-lib/models';
import { BaseContainer, BaseContainerModel } from "../../bases/elements/BaseContainer";
export declare enum ImageTypes {
    NORMAL = 0,
    DEEPZOOM = 1,
    VIDEO = 2
}
export declare class Dimensions {
    width: number;
    height: number;
    tileSize?: number;
}
export declare class ImageModel extends BaseContainerModel {
    renderer: PIXI.Renderer | PIXI.AbstractRenderer;
    canvas: HTMLCanvasElement;
    loader: PIXI.Loader;
    dimensions: Dimensions;
    imageId: string;
    id: string;
    url: string;
    minZoomFactor?: number;
    maxZoomFactor?: number;
}
export declare class ControlModel {
    name: string;
    displayObjects: PIXI.DisplayObject[];
}
export declare class Image extends BaseContainer<ImageModel> {
    protected _scaleX: number;
    protected _scaleY: number;
    private _imageObjectMenu;
    private _groupingMenu;
    private _actualWidth;
    private _actualHeight;
    private _imageType;
    private _layerGroups;
    private _contextInteraction;
    private _moveInteraction;
    private _zoomInteraction;
    protected _debounceUnselectLayerGroupMethod: any;
    protected _debounceUnselectGroupingMethod: any;
    protected _wheelMethod: any;
    protected _selectGroupElement: MedsurfDraw.SelectGroupElement;
    protected _selectItemElement: MedsurfDraw.SelectItemElement;
    protected _imageObjectMenuElement: MedsurfDraw.MenuElement;
    protected _groupingMenuElement: MedsurfDraw.MenuElement;
    protected _spriteElement: MedsurfDraw.Sprite;
    protected _clipboardButtonElement: MedsurfDraw.RoundButtonElement;
    protected _interactiveAreaButtonElement: MedsurfDraw.IndexedRoundButtonElement;
    protected _polygonButtonElement: MedsurfDraw.RoundSubMenuElement;
    protected _legendButtonElement: MedsurfDraw.IndexedRoundButtonElement;
    protected _textButtonElement: MedsurfDraw.RoundSubMenuElement;
    protected _arrowTextGroupingButtonElement: MedsurfDraw.IndexedRoundButtonElement;
    protected _arrowButtonElement: MedsurfDraw.RoundSubMenuElement;
    protected _ellipseInteractiveGroupingButtonElement: MedsurfDraw.IndexedRoundButtonElement;
    protected _ellipseButtonElement: MedsurfDraw.RoundSubMenuElement;
    protected _rectangleInteractiveGroupingButtonElement: MedsurfDraw.IndexedRoundButtonElement;
    protected _rectangleButtonElement: MedsurfDraw.RoundSubMenuElement;
    protected _arrowMarkerButtonElement: MedsurfDraw.RoundButtonElement;
    protected _ellipseMarkerButtonElement: MedsurfDraw.RoundButtonElement;
    protected _interactiveGroupingButtonElement: MedsurfDraw.RoundButtonElement;
    protected _poiGroupingButtonElement: MedsurfDraw.RoundButtonElement;
    protected _textGroupingButtonElement: MedsurfDraw.RoundButtonElement;
    protected _legendGroupingButtonElement: MedsurfDraw.RoundButtonElement;
    constructor(model: ImageModel, type?: ImageTypes);
    init(): Promise<void>;
    draw(): void;
    destroy(options?: {
        children?: boolean;
        texture?: boolean;
        baseTexture?: boolean;
    }): void;
    getImageObjects(): MedsurfDraw.ImageObject[];
    getLinesByPositionPoint(point: MedsurfDraw.PositionPoint): MedsurfDraw.Line[];
    resetGenerator(): void;
    getTexture(): PIXI.Texture | string;
    getMousePosition(): PIXI.IPoint;
    getGroupImageFromGrouping(grouping: Models.Grouping): Models.GroupImage | undefined;
    getDisplayObjectsByGrouping(grouping: Models.Grouping): PIXI.DisplayObject[] | undefined;
    getLayerGroupByImageObject(imageObject: Models.ImageObject): Models.LayerGroup | undefined;
    getLayerGroupDisplayObjectsByImageObject(imageObject: Models.ImageObject): PIXI.DisplayObject[] | undefined;
    getLayerGroupDisplayObjectsByLayerGroup(layerGroup: Models.LayerGroup): PIXI.DisplayObject[] | undefined;
    getLineForElements(start: MedsurfDraw.PositionPoint | MedsurfDraw.FillCollection, end: MedsurfDraw.PositionPoint | MedsurfDraw.FillCollection): MedsurfDraw.Line | undefined;
    getNavigatorScale(): PIXI.IPoint;
    protected _fitToScreen(width: number, height: number): Promise<void>;
    protected _setActualValues(): Promise<void>;
    protected _modeRemoveInit(): void;
    protected _modeDefault(): void;
    protected _removeModeDefault(): void;
    protected _modeMarker(): void;
    protected _removeModeMarker(): void;
    protected _modeSelftest(): void;
    protected _removeModeSelftest(): void;
    protected _modeAuthor(): void;
    protected _removeModeAuthor(): void;
    protected _modeDrawing(): void;
    protected _removeModeDrawing(): void;
    protected _modeChoosing(): void;
    protected _removeModeChoosing(): void;
    protected _modeCloning(): void;
    protected _removeModeCloning(): void;
    displayMenu(): void;
    collapseAllMenus(event: PIXI.InteractionEvent): void;
    onButtonClipboard(): void;
    onButtonInteractiveArea(): void;
    onButtonPolygon(): void;
    onMenuPolygon(event: PIXI.InteractionEvent, visible: boolean): void;
    onButtonText(): void;
    onMenuText(event: PIXI.InteractionEvent, visible: boolean): void;
    onButtonArrowInteractiveGrouping(): void;
    onButtonArrowPoiGrouping(): void;
    onButtonArrowTextGrouping(): void;
    onButtonArrow(): void;
    onMenuArrow(event: PIXI.InteractionEvent, visible: boolean): void;
    onButtonEllipseInteractiveGrouping(): void;
    onButtonEllipsePoiGrouping(): void;
    onButtonEllipseTextGrouping(): void;
    onButtonEllipse(): void;
    onMenuEllipse(event: PIXI.InteractionEvent, visible: boolean): void;
    onButtonRectangleInteractiveGrouping(): void;
    onButtonRectanglePoiGrouping(): void;
    onButtonRectangleTextGrouping(): void;
    onButtonRectangle(): void;
    onMenuRectangle(event: PIXI.InteractionEvent, visible: boolean): void;
    onButtonArrowMarker(): void;
    onButtonEllipseMarker(): void;
    onButtonInteractiveGrouping(): void;
    onButtonPoiGrouping(): void;
    onButtonTextGrouping(): void;
    onButtonLegendGrouping(): void;
    controlHideMenu(): void;
    controlSetDefaultMode(event: PIXI.InteractionEvent): void;
    controlUpdateElements(): void;
    controlSaveColor(color: number | undefined, colorAlpha: number | undefined): void;
    sendError(e: any): void;
    unselectGrouping(): void;
    degroupGroupImageLayerGroups(): void;
    editImageObjectGrouping(): void;
    selectLayerGroup(layerGroup: Models.LayerGroup): void;
    selectLayerGroupByImageObject(imageObject: Models.ImageObject): void;
    unselectLayerGroup(): void;
    addLayerGroup(layerGroup: Models.LayerGroup, image: Models.Image): void;
    addLayerGroupByName(name: string, image: Models.Image): void;
    copyLayerGroup(layerGroup: Models.LayerGroup): void;
    clipboardLayerGroup(layerGroup: Models.LayerGroup): void;
    updateLayerGroup(layerGroup: Models.LayerGroup): void;
    deleteLayerGroup(layerGroup: Models.LayerGroup): void;
    degroupLayerGroupImageObject(imageObject: Models.ImageObject): void;
    selectImageObject(imageObject: Models.ImageObject): void;
    unselectImageObject(): void;
    addImageObject(imageObject: Models.ImageObject, layerGroup: Models.LayerGroup, image: Models.Image): void;
    copyImageObject(imageObject: Models.PositionPoint | Models.Line | Models.FillCollection | Models.LegendCollection): void;
    clipboardImageObject(imageObject: Models.PositionPoint | Models.Line | Models.FillCollection | Models.LegendCollection): void;
    editImageObject(imageObject: Models.ImageObject): void;
    updateImageObject(imageObject: Models.ImageObject): void;
    deleteImageObject(imageObject: Models.ImageObject): void;
    selectPrimitive(primitive: Models.ArrowPrimitive | Models.BackgroundRectanglePrimitive | Models.EllipsePrimitive | Models.RectanglePrimitive | Models.TextPrimitive, positionPoint: Models.PositionPoint): void;
    unselectPrimitive(): void;
    editPrimitive(primitive: Models.ArrowPrimitive | Models.BackgroundRectanglePrimitive | Models.EllipsePrimitive | Models.RectanglePrimitive | Models.TextPrimitive): void;
    updatePrimitive(primitive: Models.ArrowPrimitive | Models.BackgroundRectanglePrimitive | Models.EllipsePrimitive | Models.RectanglePrimitive | Models.TextPrimitive): void;
    deletePrimitive(primitive: Models.ArrowPrimitive | Models.BackgroundRectanglePrimitive | Models.EllipsePrimitive | Models.RectanglePrimitive | Models.TextPrimitive): void;
    selectLegendColumn(legendColumn: Models.LegendColumn, legend: Models.LegendCollection): void;
    unselectLegendColumn(): void;
    editLegendColumn(legendColumn: Models.LegendColumn, legendCollection: Models.LegendCollection): void;
    updateLegendColumn(legendColumn: Models.LegendColumn): void;
    deleteLegendColumn(legendColumn: Models.LegendColumn): void;
    selectLegendRow(legendRow: Models.LegendRow, legendColumn: Models.LegendColumn, legend: Models.LegendCollection): void;
    unselectLegendRow(): void;
    editLegendRow(legendRow: Models.LegendRow, legendColumn: Models.LegendColumn, legendCollection: Models.LegendCollection): void;
    updateLegendRow(legendRow: Models.LegendRow): void;
    deleteLegendRow(legendRow: Models.LegendRow): void;
    createPolygon(): void;
    createFill(): void;
    createInteractiveArea(): void;
    createLegend(): void;
    createText(): void;
    createArrow(): void;
    createArrowWithInteractiveGrouping(): void;
    createArrowWithPoiGrouping(): void;
    createArrowWithTextGrouping(): void;
    createEllipse(): void;
    createEllipseWithInteractiveGrouping(): void;
    createEllipseWithPoiGrouping(): void;
    createEllipseWithTextGrouping(): void;
    createRectangle(): void;
    createRectangleWithInteractiveGrouping(): void;
    createRectangleWithPoiGrouping(): void;
    createRectangleWithTextGrouping(): void;
    createArrowMarker(): void;
    createEllipseMarker(): void;
    createRectangleMarker(): void;
    cloneFromClipboard(): void;
    createInteractiveGrouping(layerGroup?: Models.LayerGroup): void;
    createPoiGrouping(layerGroup?: Models.LayerGroup): void;
    createTextGrouping(layerGroup?: Models.LayerGroup): void;
    createLegendGrouping(layerGroup?: Models.LayerGroup): void;
    externControlSelectImage(): void;
    externControlSelectGrouping(model: Models.Grouping): boolean;
    externControlSelectLayerGroup(model: Models.LayerGroup): boolean;
    externControlSelectImageObject(model: Models.ImageObject): boolean;
    externControlSelectPrimitive(positionPointModel: Models.PositionPoint, model: Models.ArrowPrimitive | Models.BackgroundRectanglePrimitive | Models.EllipsePrimitive | Models.RectanglePrimitive | Models.TextPrimitive): boolean;
    externControlSelectLegendColumn(legendCollectionModel: Models.LegendCollection, model: Models.LegendColumn): boolean;
    externControlSelectLegendRow(legendCollectionModel: Models.LegendCollection, legendColumnModel: Models.LegendColumn, model: Models.LegendRow): boolean;
    endRight(event: PIXI.InteractionEvent): void;
    onResize(): Promise<void>;
    startMove(event: PIXI.InteractionEvent): void;
    onMove(event: PIXI.InteractionEvent, dX: number, dY: number): void;
    endMove(event: PIXI.InteractionEvent): void;
    endMoveLock(event: PIXI.InteractionEvent): void;
    endMoveMenu(): void;
    onZoom(event: PIXI.InteractionEvent, x: number, y: number, factor: number): void;
    get image(): MedsurfDraw.Image | MedsurfDraw.DeepZoomImage;
    get imageCanvas(): HTMLCanvasElement;
    get imageScale(): PIXI.IPoint;
    get imageDimensions(): MedsurfDraw.Dimensions;
    get renderer(): PIXI.Renderer | PIXI.AbstractRenderer;
    set renderer(value: PIXI.Renderer | PIXI.AbstractRenderer);
    get canvas(): HTMLCanvasElement;
    set canvas(value: HTMLCanvasElement);
    get loader(): PIXI.Loader;
    set loader(value: PIXI.Loader);
    get dimensions(): Dimensions;
    set dimensions(value: Dimensions);
    get imageId(): string;
    set imageId(value: string);
    get id(): string;
    set id(value: string);
    get url(): string;
    set url(value: string);
    get minZoomFactor(): number;
    set minZoomFactor(value: number);
    get maxZoomFactor(): number;
    set maxZoomFactor(value: number);
    get imageObjectMenu(): MedsurfDraw.MenuEntryModel[];
    set imageObjectMenu(value: MedsurfDraw.MenuEntryModel[]);
    get groupingMenu(): MedsurfDraw.MenuEntryModel[];
    set groupingMenu(value: MedsurfDraw.MenuEntryModel[]);
    get actualWidth(): number;
    get actualHeight(): number;
    get imageType(): ImageTypes;
    get layerGroups(): Models.LayerGroup[];
    set layerGroups(value: Models.LayerGroup[]);
    get contextInteraction(): MedsurfDraw.ContextInteraction<Image>;
    set contextInteraction(value: MedsurfDraw.ContextInteraction<Image>);
    get moveInteraction(): MedsurfDraw.MoveInteraction<Image>;
    set moveInteraction(value: MedsurfDraw.MoveInteraction<Image>);
    get zoomInteraction(): MedsurfDraw.ZoomInteraction<Image>;
    set zoomInteraction(value: MedsurfDraw.ZoomInteraction<Image>);
}
