import { RectangleF, Transform, PointF, Path } from "@aurigma/design-atoms-model/Math";
import { BaseTextItemHandler } from "../ItemHandlers/BaseTextItemHandler";
import { NewBaseTextItemHandler } from "../ItemHandlers/NewBaseTextItemHandler";
import { ImageContainer } from "../ItemHandlers/ImageContainer";
import * as TextWhizz from "@aurigma/text-whizz/TextWhizzJS";
import { RgbColor } from "@aurigma/design-atoms-model/Colors";
import { IViewportHandler } from "../Viewer/Interfaces/IViewportHandler";
import { IColorPreviewService } from "../Services/IColorPreviewService";
import { IRgbColorParser } from "../Serialization/Color";
import { Size } from "@aurigma/design-atoms-model/Product/Items";
export interface ITextSelectionStyleConfig {
    color: string;
    textColor: string;
}
export interface ICanvasFactory {
    createCanvas(size: Size): HTMLCanvasElement;
}
export declare abstract class TextRenderer {
    protected _staticCanvas: HTMLCanvasElement;
    protected _activeCanvas: HTMLCanvasElement;
    protected _textWhizz: typeof TextWhizz;
    protected _zoom: number;
    protected _offset: PointF;
    protected _viewportHandler: IViewportHandler;
    protected _selectionStyle: ITextSelectionStyleConfig;
    protected _rgbColorParser: IRgbColorParser;
    private _canvasFactory;
    static staticCanvasMargin: number;
    protected _workspaceWidth: number;
    protected _workspaceHeight: number;
    protected _colorPreviewService: IColorPreviewService;
    constructor(_staticCanvas: HTMLCanvasElement, _activeCanvas: HTMLCanvasElement, _textWhizz: typeof TextWhizz, _zoom: number, _offset: PointF, _viewportHandler: IViewportHandler, _selectionStyle: ITextSelectionStyleConfig, _rgbColorParser: IRgbColorParser, _canvasFactory: ICanvasFactory);
    setWorkspaceSize(width: number, height: number): void;
    setZoom(value: number): void;
    set offset(value: PointF);
    get offset(): PointF;
    protected get _scale(): number;
    protected _getScaledBounds(bounds: RectangleF): RectangleF;
    protected _getScaledBoundsWithoutRound(bounds: RectangleF): RectangleF;
    protected _colorToTextWhizz(color: RgbColor): TextWhizz.Color;
    abstract drawText(handler: TextWhizz.TextHandler, transform: Transform, center: PointF, previewScale: number, opacity: number, clippingPath: Path): void;
    abstract transformText(handler: TextWhizz.TextHandler, transform: Transform, center: PointF, previewScale: number, opacity: number, clippingPath: Path): void;
    abstract clearText(): void;
    abstract drawSelection(handler: TextWhizz.TextHandler, selection: TextWhizz.TextRange, transform: Transform, center: PointF, previewScale: number): void;
    abstract getTextImage(handler: TextWhizz.TextHandler, bounds: RectangleF, previewScale: number): HTMLCanvasElement;
    static renderTextImage(handler: BaseTextItemHandler | NewBaseTextItemHandler, imageContainer: ImageContainer, imageContainerRect: RectangleF, itemHandlerCtx: CanvasRenderingContext2D, opacityMultiplier: number, increaseImageRect: number): void;
    protected _createCanvas(size: Size): HTMLCanvasElement;
    protected _copyCanvas(source: HTMLCanvasElement, size: Size): HTMLCanvasElement;
    private static _drawWaitClock;
    private static _isUpdatingAfterResize;
    private static _drawImage;
}
