import type { PointerEventState } from '@blockeditor/block-std';
import type { EdgelessTool as EdgelessTool, TopLevelBlockModel } from '../../../../_common/utils/index.js';
import type { EdgelessPageBlockComponent } from '../../edgeless-page-block.js';
import type { SelectionArea } from '../../services/tools-manager.js';
export declare abstract class EdgelessToolController<Tool extends EdgelessTool = EdgelessTool> {
    protected readonly _edgeless: EdgelessPageBlockComponent;
    protected _draggingArea: SelectionArea | null;
    enableHover: boolean;
    constructor(edgeless: EdgelessPageBlockComponent);
    get draggingArea(): SelectionArea | null;
    protected get _surface(): import("../../../../index.js").SurfaceBlockComponent;
    protected get _page(): import("@blockeditor/store").Page;
    protected get _blocks(): TopLevelBlockModel[];
    abstract tool: Tool;
    abstract onContainerPointerDown(e: PointerEventState): void;
    abstract onContainerDragStart(e: PointerEventState): void;
    abstract onContainerDragMove(e: PointerEventState): void;
    abstract onContainerDragEnd(e: PointerEventState): void;
    abstract onContainerClick(e: PointerEventState): void;
    abstract onContainerDblClick(e: PointerEventState): void;
    abstract onContainerTripleClick(e: PointerEventState): void;
    abstract onContainerMouseMove(e: PointerEventState): void;
    abstract onContainerMouseOut(e: PointerEventState): void;
    abstract onContainerContextMenu(e: PointerEventState): void;
    abstract onPressShiftKey(pressed: boolean): void;
    abstract beforeModeSwitch(prevMode: Tool): void;
    abstract afterModeSwitch(newMode: Tool): void;
}
//# sourceMappingURL=index.d.ts.map