import * as TextWhizz from "@aurigma/text-whizz/TextWhizzJS";
import { Item, PointF, RectangleF } from "@aurigma/design-atoms-model";
import { ITextEditor } from "@aurigma/design-atoms-text/TextEditor";
import { PlaceholderItemHandler } from "./ItemHandlers/PlaceholderItemHandler";
import { ItemHandler } from "./ItemHandlers/ItemHandler";
import { ImageItemHandler } from "./ItemHandlers/ImageItemHandler";
import { PlainTextItemHandler } from "./ItemHandlers/PlainTextItemHandler";
import { RectangleItemHandler } from "./ItemHandlers/RectangleItemHandler";
import { ShapeItemHandler } from "./ItemHandlers/ShapeItemHandler";
import { BaseTextItemHandler } from "./ItemHandlers/BaseTextItemHandler";
import { NewBaseTextItemHandler } from "./ItemHandlers/NewBaseTextItemHandler";
import { BaseRectangleItemHandler } from "./ItemHandlers/BaseRectangleItemHandler";
import { Service } from "./Services";
import { FontRegistry } from "./InPlace";
import { History } from "./History";
import { GroupItemHandler } from "./ItemHandlers";
import { UpdateButtonGroupsOptions } from "./Viewer/UpdateButtonGroupsOptions";
import { IDesignAtomsApiClient } from "./Services/IDesignAtomsApiClient";
import { IHitTestManager, IViewerConfiguration } from "./Viewer/Interfaces";
import { IWorkspace } from "./IWorkspace";
import { CanvasData } from "./CanvasData";
import { LayerCollection } from "./LayerCollection";
import { CanvasRendererStyle } from "./Canvas/CanvasRendererStyle";
import { IHoverHandler } from "./Canvas/Interfaces";
import { IRenderingConfigProvider } from "./IRenderingConfigProvider";
export declare type ItemHandlerType = typeof PlaceholderItemHandler | typeof ImageItemHandler | typeof ItemHandler | typeof PlainTextItemHandler | typeof RectangleItemHandler | typeof ShapeItemHandler | typeof BaseTextItemHandler | typeof NewBaseTextItemHandler;
export declare type GetItemHandlersOptions = {
    excludeGroupItems?: boolean;
    flatGroupItems?: boolean;
    onlyVisible?: boolean;
    onlyUnlocked?: boolean;
    onlyType?: ItemHandlerType | ItemHandlerType[];
    whiteListFilter?: (handler: any) => boolean;
    blackListFilter?: (handler: any) => boolean;
};
export interface ICanvas {
    layers: LayerCollection;
    canvasElementSize: {
        width?: number;
        height?: number;
    };
    width: number;
    height: number;
    ignorePermissionsMode: boolean;
    service: Service;
    isInitialized: boolean;
    initialization: boolean;
    zoom: number;
    workspaceWidth: number;
    workspaceHeight: number;
    workspace: IWorkspace;
    disableSmoothing: boolean;
    goodViolationIconCssClass: string;
    warningViolationIconCssClass: string;
    badViolationIconCssClass: string;
    qualityBadToWarningChangeScaleBarCssClass: string;
    qualityWarningToGoodChangeScaleBarCssClass: string;
    qualityBadToGoodChangeScaleBarCssClass: string;
    qualityNoAnimationChangeScaleBarCssClass: string;
    qualityChangeScaleBarCssClass: string;
    hitTestManager: IHitTestManager;
    previewMode: boolean;
    designAtomsApiClient: IDesignAtomsApiClient;
    textEditor: ITextEditor;
    textWhizz: typeof TextWhizz;
    minFontSize: number;
    maxFontSize: number;
    minLeading: number;
    maxLeading: number;
    isSelectionLocked: boolean;
    isSelectionResizing: boolean;
    isSelectionRotating: boolean;
    isSelectionDragging: boolean;
    isSelectionIdle: boolean;
    fontRegistry: FontRegistry;
    viewerConfiguration: IViewerConfiguration | null;
    offset: PointF;
    history: History;
    frontEndTextRenderingEnabled: boolean;
    currentItemHandler: ItemHandler;
    mul: number;
    style: CanvasRendererStyle;
    hoverHandler: IHoverHandler;
    renderingConfigProvider: IRenderingConfigProvider;
    contentAngle: number;
    getData(forService?: boolean, layerId?: string): CanvasData;
    updateSelection(force?: boolean): void;
    redraw(): void;
    pauseRedraw(): void;
    continueRedraw(): void;
    redrawDesign(): void;
    redrawActiveTexts(): void;
    getItemHandler<THandler extends ItemHandler>(item: Item): THandler;
    deleteItemHandler(itemHandler: ItemHandler): void;
    updateTexts(): void;
    drawWaitClock(context: CanvasRenderingContext2D, center: PointF): void;
    updateViolationContainers(updatePosition?: boolean, onlyVisible?: boolean): void;
    updateViolationContainer(itemHandler: BaseRectangleItemHandler, updatePosition?: boolean): void;
    updateViolationContainerPosition(itemHandler: BaseRectangleItemHandler): void;
    addViolationContainer(itemHandler: BaseRectangleItemHandler): void;
    removeViolationContainer(itemHandler: BaseRectangleItemHandler): void;
    isOnlyThisItemHandlerSelected(itemHandler: BaseRectangleItemHandler): boolean;
    isItemHandlerSelected(itemHandler: ItemHandler): boolean;
    addSelectedItemHandler(itemHandler: ItemHandler): void;
    removeSelectedItemHandler(itemHandler: ItemHandler): void;
    setSelectedItemHandlers(itemHandlers: ItemHandler[]): void;
    clearSelectedItemHandlers(): void;
    add_zoomChanged(listener: any): void;
    remove_zoomChanged(listener: any): void;
    addPlaceholderButtonGroup(placeholder: PlaceholderItemHandler): void;
    removePlaceholderButtonGroup(placeholder: PlaceholderItemHandler): void;
    updatePlaceholderButtonGroup(placeholder: PlaceholderItemHandler | GroupItemHandler): void;
    updatePlaceholderButtonGroups(): void;
    updatePlaceholderButtonGroupPosition(placeholder: PlaceholderItemHandler): void;
    isDragSource(itemHandler: ItemHandler): boolean;
    isDragTarget(itemHandler: ItemHandler): boolean;
    updateButtonGroups(options: UpdateButtonGroupsOptions): void;
    waitUpdate(itemHandlers?: ItemHandler[]): Promise<void[]>;
    onLayerTextureLoaded(): void;
    doesContainItem(item: Item): boolean;
    pauseUpdateTexts(): void;
    resumeUpdateTexts(): void;
    enableSelection(): void;
    disableSelection(): void;
    unsubscribeLimitsMessage(): void;
    subscribeLimitsMessage(): void;
    add_onScroll(handler: any): void;
    remove_onScroll(handler: any): void;
    add_selectedItemHandlerChanged(handler: any): void;
    remove_selectedItemHandlerChanged(handler: any): void;
    add_onSelectionLocked(handler: any): void;
    remove_onSelectionLocked(handler: any): void;
    ensureFocus(): void;
    setCursor(value: any, onBody: boolean): void;
    getAllItemHandlers(options?: GetItemHandlersOptions): ItemHandler[];
    violationWarningButtonHitTestObject(pt: PointF): BaseRectangleItemHandler;
    getButtonGroupRectInGripsDiv(div: HTMLElement, ignoreRotate?: boolean): RectangleF;
}
