import { EventWithSenderArg } from "@aurigma/design-atoms-model/EventObject";
import { RectangleF, Transform } from "@aurigma/design-atoms-model/Math";
import { ITextEditor } from "@aurigma/design-atoms-text/TextEditor/Interfaces/ITextEditor";
import { TextEditorController } from "./TextEditorController";
import { IPointerParams, IKeyboardEventParams } from "./../Input/InputManager/IInputManager";
import { ICanvas } from "../ICanvas";
export declare type StaticTextChangedEventData = {
    rect: RectangleF;
    canvas: HTMLCanvasElement;
};
export declare type StaticTextChangedHandler = (data: StaticTextChangedEventData) => void;
/**
 * Manages a text editor (TextWhizz or mobile versions).
 */
export interface ITextEditorController {
    isMobile: boolean;
    ready: boolean;
    failed: boolean;
    isStatic: boolean;
    isActive: boolean;
    isInEdit: boolean;
    isCropped: boolean;
    enteredEditModeEvent: EventWithSenderArg<TextEditorController, unknown>;
    exitedEditModeEvent: EventWithSenderArg<TextEditorController, unknown>;
    activeTextEditor: ITextEditor;
    initialize(): Promise<void>;
    enterEditMode(x: number, y: number): Promise<void>;
    exitEditMode(isStayActive: boolean): Promise<void>;
    updateItemHandler(newFrame?: RectangleF): void;
    bindToCanvas(canvas: ICanvas): void;
    unbindFromCanvas(): void;
    add_staticTextImageChanged(handler: StaticTextChangedHandler): void;
    remove_staticTextImageChanged(handler: StaticTextChangedHandler): void;
    dispose(): any;
    processKeyEvent(e: IKeyboardEventParams): Promise<boolean>;
    processMouseEvent(e: IPointerParams, mouseOverCurrent: boolean): Promise<boolean>;
    clearText(): void;
    updateText(source: string, force?: boolean): Promise<void>;
    transformText(transform: Transform): void;
    measureText(extendToBlackBox?: boolean): RectangleF;
    measureTextFrame(): RectangleF;
    redrawText(): any;
    canRedo: boolean;
    canUndo: boolean;
    undo(): void;
    redo(): void;
    redrawActiveText(): any;
    waitUpdate(): Promise<void>;
}
