import { RectangleF, PointF, Path, RotatedRectangleF, Transform } from "@aurigma/design-atoms-model/Math";
import { BaseTextItem } from "@aurigma/design-atoms-model/Product/Items";
import { IInlineStyle, IParagraphStyle } from "../InPlace/ITextEditor";
import { FontRegistry } from "../InPlace/FontRegistry";
import * as TextWhizz from "@aurigma/text-whizz/TextWhizzJS";
import { ShapeItemHandler } from "./ShapeItemHandler";
import { ShapeHandlerData } from "./ShapeHandlerData";
import { EventWithSenderArg } from "@aurigma/design-atoms-model/EventObject";
import { ITextFrameData, IWrappingPathData, ITextEditor } from "@aurigma/design-atoms-text/TextEditor/Interfaces";
import { ITextEditorController } from "../InPlace/ITextEditorController";
import { IPointerParams, IKeyboardEventParams } from "./../Input/InputManager/IInputManager";
import { IDesignAtomsApiClient } from "../Services/IDesignAtomsApiClient";
import { IListenableColorPreviewService } from "../Services/IColorPreviewService";
import { Color } from "@aurigma/design-atoms-model";
import { ICanvas } from "../ICanvas";
import { ItemHandlerState } from "./ItemHandlerState";
export interface ITextEditorControllerFactory {
    create(itemHandler: NewBaseTextItemHandler, textWhizz: typeof TextWhizz): ITextEditorController;
}
export declare abstract class NewBaseTextItemHandler extends ShapeItemHandler {
    static readonly typeName: string;
    private readonly _imageContainer;
    private readonly _textEditorControllerFactory;
    private _fontRegistry;
    private _fontRegistryUpdated;
    private _waitLoadFontsDef;
    private _waitLoadFontsLastInnerUpdate;
    private _frontEndUpdateExecutionToken;
    private _initFrontEndRenderingDef;
    protected _staticTextRect: RectangleF;
    protected readonly _exitedEditModeEvent: EventWithSenderArg<unknown, unknown>;
    protected readonly _enteredEditModeEvent: EventWithSenderArg<unknown, unknown>;
    protected _textEditorController: ITextEditorController;
    protected constructor(fontRegistry: FontRegistry, textEditorControllerFactory: ITextEditorControllerFactory, item?: BaseTextItem, textWhizz?: typeof TextWhizz, apiClient?: IDesignAtomsApiClient, colorPreviewService?: IListenableColorPreviewService);
    isHighlightNeeded(): boolean;
    get textEditorController(): ITextEditorController;
    get item(): BaseTextItem;
    set item(item: BaseTextItem);
    get isInEdit(): boolean;
    get textEditor(): ITextEditor;
    get editing(): boolean;
    get textCropped(): boolean;
    get frontEndRenderingReady(): boolean;
    get inPlaceEditingEnabled(): boolean;
    get exitedEditModeEvent(): EventWithSenderArg<unknown, unknown>;
    get enteredEditModeEvent(): EventWithSenderArg<unknown, unknown>;
    get colorPreviewService(): IListenableColorPreviewService;
    abstract getFramesData(): ITextFrameData;
    abstract getWrappingPathData(): IWrappingPathData;
    abstract setTextWhizzWrappingPath(handler: TextWhizz.TextHandler): void;
    updateText(text: string): void;
    applyInlineStyle(style: IInlineStyle): void;
    applyParagraphStyle(paragraphStyle: IParagraphStyle): void;
    isEmpty(): boolean;
    isEmptyTextPlaceholder(): boolean;
    setTextWhizzModule(textWhizz: typeof TextWhizz, fontRegistry: FontRegistry): void;
    onTextWhizzInit(): void;
    waitUpdate(): Promise<void>;
    frontEndUpdate(beforeUpdate?: Function, afterUpdate?: Function, trigger?: string): Promise<void>;
    update(beforeUpdate?: Function, afterUpdate?: Function, trigger?: string): void;
    updateAsync(beforeUpdate?: Function, afterUpdate?: Function, trigger?: string): Promise<void>;
    quickUpdate(): void;
    setRectangle(rectangle: RotatedRectangleF, supressOnChanged?: boolean): void;
    updateRectangle(rectangle: RectangleF, updateFromTextEdit: boolean): void;
    redrawActiveText(): void;
    drawItemHandler(itemHandlerCtx: CanvasRenderingContext2D): void;
    clearImageContainer(): void;
    _endTransform(changed: boolean, resized: boolean): void;
    processInPlaceEditingMouseEvent(e: IPointerParams, mouseOverCurrent: boolean): Promise<boolean>;
    processInPlaceEditingKeyEvent(e: IKeyboardEventParams): Promise<boolean>;
    enterEditMode(): Promise<void>;
    exitEditMode(stayActive?: boolean): Promise<void>;
    getTextForRendering(): string;
    dispose(): void;
    protected _isReady(): boolean;
    protected _drawHandlerEffects(ctx: CanvasRenderingContext2D): void;
    protected _getColors(): Color[];
    protected _updateImpl(beforeUpdate?: Function, afterUpdate?: Function, trigger?: string): Promise<void>;
    protected abstract _applyTransform(item: BaseTextItem, transform: Transform, center: PointF): void;
    protected _onItemPropertyChanged(sender: BaseTextItem, propertyName: string): void;
    protected _onItemVisibilityChanged(): void;
    protected _setDataItem(itemData: BaseTextItem, itemHandlerData: any): void;
    protected _createDataInstance(itemHandler?: ShapeItemHandler): ShapeHandlerData;
    protected _onAddedOnCanvas(canvas: ICanvas): void;
    protected _onRemovedFromCanvas(canvas: any): void;
    protected _transformText(transform: Transform): void;
    protected _getBoundsMargin(): number;
    protected renderFill(itemHandlerCtx: CanvasRenderingContext2D, opacityMultiplier: number): void;
    protected renderStroke(itemHandlerCtx: CanvasRenderingContext2D, opacityMultiplier: number): void;
    protected _getEndTransformTrigger(resized: boolean): string;
    protected _onFrontEndRenderingInitialized(): void;
    private _initFrontEndRendering;
    private _onStaticTextImageChanged;
    protected _onTextManagerEnteredEditMode(): void;
    protected _onTextManagerExitedEditMode(): void;
    protected _getPreviewScaleLimits(): {
        min: number;
        max: number;
    };
    protected waitInitFrontEndRendering(): Promise<void>;
    private _waitFontRegistryInitialized;
    protected _pathToTextWhizzPath(path: Path): TextWhizz.Path;
    private get _isMobileTextEditorActive();
    private _beforeFrontEndUpdate;
    private _isFrontEndRenderingInitialized;
    private _doFrontEndUpdate;
    private _waitLoadFonts;
    private _getFonts;
    protected _needToDrawBaseline(): boolean;
    protected _getBaselineDrawStates(): ItemHandlerState[];
    protected _getCurrentState(): ItemHandlerState;
}
