import { PointF, Item, RectangleF, Surface, IRenderingConfig } from "@aurigma/design-atoms-model";
import { ITextEditor } from "@aurigma/design-atoms-text";
import { History } from "../../History";
import { FontRegistry } from "../../InPlace";
import { BaseRectangleItemHandler, GroupItemHandler, ItemHandler, PlaceholderItemHandler } from "../../ItemHandlers";
import { Service, IListenableColorPreviewService } from "..";
import { IDesignAtomsApiClient } from "../IDesignAtomsApiClient";
import { IHitTestManager, IViewerConfiguration, UpdateButtonGroupsOptions, Translations } from "../../Viewer";
import { GetItemHandlersOptions, ICanvas } from "../../ICanvas";
import { ICanvasDataSource } from "../../ICanvasDataSource";
import { LayerCollection } from "../../LayerCollection";
import { CanvasData } from "../../CanvasData";
import { IWorkspace } from "../../IWorkspace";
import { IPreviewContainersSourceFactory } from "./Interfaces/IPreviewContainersSource";
import { CanvasRendererStyle } from "../../Canvas/CanvasRendererStyle";
import { IHoverHandler } from "../../Canvas/Interfaces";
import { IRenderingConfigProvider } from "../../IRenderingConfigProvider";
export interface IWaitClockRenderer {
    drawWaitClock(context: CanvasRenderingContext2D, center: PointF, mul: number): void;
}
export interface IViewerConfigurationContext {
    configuration: IViewerConfiguration;
}
export declare class PreviewCanvas implements ICanvas, ICanvasDataSource {
    private readonly _sourceSurface;
    private readonly _previewContainersSource;
    private readonly _zoom;
    private readonly _mul;
    private readonly _surfaceHandler;
    private readonly _layers;
    private readonly _renderer;
    private readonly _designAtomsApiClient;
    private readonly _colorPreviewService;
    private readonly _service;
    private readonly _viewerConfigurationContext;
    private readonly _handlerFactory;
    private readonly _style;
    private readonly _renderingConfigProvider;
    constructor(sourceSurface: Surface, previewContainersSourceFactory: IPreviewContainersSourceFactory, zoom: number, mul: number, renderer: IWaitClockRenderer, designAtomsApiClient: IDesignAtomsApiClient, colorPreviewService: IListenableColorPreviewService, service: Service, viewerConfigurationContext: IViewerConfigurationContext);
    get layers(): LayerCollection;
    get width(): number;
    get height(): number;
    get workspaceWidth(): number;
    get workspaceHeight(): number;
    get workspace(): IWorkspace;
    get canvasElementSize(): {
        width?: number;
        height?: number;
    };
    get currentItemHandler(): ItemHandler;
    get ignorePermissionsMode(): boolean;
    get service(): Service;
    get isInitialized(): boolean;
    get initialization(): boolean;
    get zoom(): number;
    get mul(): number;
    get disableSmoothing(): boolean;
    get hitTestManager(): IHitTestManager;
    get previewMode(): boolean;
    get designAtomsApiClient(): IDesignAtomsApiClient;
    get textEditor(): ITextEditor;
    get textWhizz(): typeof import("@aurigma/text-whizz/TextWhizzJS");
    get fontRegistry(): FontRegistry;
    get frontEndTextRenderingEnabled(): boolean;
    get minFontSize(): number;
    get maxFontSize(): number;
    get minLeading(): number;
    get maxLeading(): number;
    get isSelectionLocked(): boolean;
    get isSelectionResizing(): boolean;
    get isSelectionDragging(): boolean;
    get isSelectionRotating(): boolean;
    get isSelectionIdle(): boolean;
    get viewerConfiguration(): IViewerConfiguration;
    get offset(): PointF;
    get history(): History;
    get rgbColorProfileFileId(): string;
    get cmykColorProfileFileId(): string;
    get grayscaleColorProfileFileId(): string;
    get targetDpi(): number;
    get resizeGripColor(): string;
    get rotationGripColor(): string;
    get resizeGripSize(): number;
    get rotationGripSize(): number;
    get tags(): Object;
    get selectionColor(): string;
    get selectionWidth(): number;
    get resizeGripLineColor(): string;
    get rotationGripLineColor(): string;
    get rotationGripLineLength(): number;
    get translations(): Translations;
    get multipleSelectionEnabled(): boolean;
    get mouseMoveTimeout(): number;
    get goodViolationIconCssClass(): string;
    get warningViolationIconCssClass(): string;
    get badViolationIconCssClass(): string;
    get qualityBadToWarningChangeScaleBarCssClass(): string;
    get qualityWarningToGoodChangeScaleBarCssClass(): string;
    get qualityBadToGoodChangeScaleBarCssClass(): string;
    get qualityNoAnimationChangeScaleBarCssClass(): string;
    get qualityChangeScaleBarCssClass(): string;
    get placeholderButtonGroupCssClass(): string;
    get handleButtonCssClass(): string;
    get doneButtonCssClass(): string;
    get qualityChangeContainerCssClass(): string;
    get qualityChangeInfoBarCssClass(): string;
    get violationContainerCssClass(): string;
    get violationWarningButtonCssClass(): string;
    get bigButtonGroupCssClass(): string;
    get contentAngle(): number;
    get sourceSurface(): Surface;
    get style(): CanvasRendererStyle;
    get hoverHandler(): IHoverHandler;
    get renderingConfig(): IRenderingConfig;
    get renderingConfigProvider(): IRenderingConfigProvider;
    private get _workspaceSize();
    private get _allItemHandlers();
    getItemHandler<THandler extends ItemHandler>(item: Item): THandler;
    deleteItemHandler(itemHandler: ItemHandler): void;
    getData(forService?: boolean, layerId?: string): CanvasData;
    drawWaitClock(context: CanvasRenderingContext2D, center: PointF): void;
    doesContainItem(item: Item): boolean;
    updateSelection(force?: boolean): void;
    redraw(): void;
    pauseRedraw(): void;
    continueRedraw(): void;
    redrawDesign(): void;
    redrawActiveTexts(): void;
    updateTexts(): 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;
    waitFontRegistryInitialized(): Promise<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[]>;
    waitUpdateAndExecute(callback: () => void): Promise<void>;
    onLayerTextureLoaded(): void;
    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;
    dispose(): void;
    private _onPreviewContainersChanged;
    private _onLayerCollectionChanged;
    private _subscribeLayersEvents;
    private _unsubscribeLayersEvents;
    private _onItemHandlersChanged;
    private _updateLayers;
    private _updateHandlers;
    private _waitHandlerReady;
}
