/** @packageDocumentation
 * @module MarkupTools
 */
import { XAndY } from "@itwin/core-geometry";
import { BeTouchEvent, EventHandled, PrimitiveTool, Viewport } from "@itwin/core-frontend";
import { G, Element as MarkupElement, Text as MarkupText } from "@svgdotjs/svg.js";
import { Markup } from "./Markup";
/** Base class for all tools that operate on Markup elements.
 * @public
 */
export declare abstract class MarkupTool extends PrimitiveTool {
    markup: Markup;
    static toolKey: string;
    requireWriteableTarget(): boolean;
    isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean;
    onInstall(): Promise<boolean>;
    onPostInstall(): Promise<void>;
    onUnsuspend(): Promise<void>;
    onRestartTool(): Promise<void>;
    protected showPrompt(): void;
    protected setupAndPromptForNextAction(): void;
    protected outputMarkupPrompt(msg: string): void;
    onTouchMoveStart(ev: BeTouchEvent, startEv: BeTouchEvent): Promise<EventHandled>;
    onTouchMove(ev: BeTouchEvent): Promise<void>;
    onTouchComplete(ev: BeTouchEvent): Promise<void>;
    onTouchCancel(ev: BeTouchEvent): Promise<void>;
    undoPreviousStep(): Promise<boolean>;
    redoPreviousStep(): Promise<boolean>;
    /** Find the topmost MarkupElement at the specified point in the markup view.
     * @param pt the point in view coordinates
     * @returns The topmost element, or undefined if no elements under pt.
     */
    pickElement(pt: XAndY): MarkupElement | undefined;
    protected setCurrentStyle(element: MarkupElement, canBeFilled: boolean): void;
    protected setCurrentTextStyle(element: MarkupElement): void;
    /** @internal */
    createBoxedText(g: G, text: MarkupText): G;
}
//# sourceMappingURL=MarkupTool.d.ts.map