import type { SurfaceSelection } from '@blockeditor/block-std';
import { type UIEventDispatcher } from '@blockeditor/block-std';
import { DisposableGroup } from '@blockeditor/global/utils';
import { type EdgelessTool, type Selectable } from '../../../_common/utils/index.js';
import type { EdgelessToolController } from '../controllers/tools/index.js';
import type { EdgelessPageBlockComponent } from '../edgeless-page-block.js';
import type { EdgelessSelectionState } from './selection-manager.js';
export interface EdgelessHoverState {
    rect: DOMRect;
    content: Selectable;
}
export interface SelectionArea {
    start: DOMPoint;
    end: DOMPoint;
}
export declare class EdgelessToolsManager {
    readonly container: EdgelessPageBlockComponent;
    protected readonly dispatcher: UIEventDispatcher;
    private _edgelessTool;
    private _controllers;
    /** Latest mouse position in view coords */
    private _lastMousePos;
    private _rightClickTimer;
    private _shiftKey;
    private _dragging;
    get dragging(): boolean;
    get selection(): import("./selection-manager.js").EdgelessSelectionManager;
    get surface(): import("../../../index.js").SurfaceBlockComponent;
    get lastMousePos(): {
        x: number;
        y: number;
    };
    get edgelessTool(): EdgelessTool;
    set edgelessTool(mode: EdgelessTool);
    get currentController(): EdgelessToolController<EdgelessTool>;
    get draggingArea(): DOMRect | null;
    get shiftKey(): boolean;
    set shiftKey(pressed: boolean);
    get page(): import("@blockeditor/store").Page;
    protected readonly _disposables: DisposableGroup;
    constructor(container: EdgelessPageBlockComponent, dispatcher: UIEventDispatcher);
    private _updateLastMousePos;
    private _initMouseAndWheelEvents;
    private _add;
    private _onContainerDragStart;
    private _onContainerDragMove;
    private _onContainerDragEnd;
    private _onContainerClick;
    private _onContainerDblClick;
    private _onContainerTripleClick;
    private _onContainerPointerMove;
    private _onContainerPointerOut;
    private _onContainerContextMenu;
    private _onContainerPointerDown;
    private _onContainerPointerUp;
    getHoverState(): EdgelessHoverState | null;
    setEdgelessTool: (edgelessTool: EdgelessTool, state?: EdgelessSelectionState | SurfaceSelection[]) => void;
    switchToDefaultMode(state: EdgelessSelectionState): void;
    clear(): void;
    dispose(): void;
}
//# sourceMappingURL=tools-manager.d.ts.map