import { RenderableModel } from '../model/RenderableModel';
import { ShadowEmitter } from '../utils/ShadowEmitter';
export declare abstract class WhiteboardTool {
    protected modelGetter: () => Promise<RenderableModel | null>;
    protected scope: paper.PaperScope;
    readonly tool: paper.Tool;
    shadowEmitter: ShadowEmitter;
    private enableToolEvent;
    private eventAvailable;
    private lastDragTime;
    private dragRafId;
    private pendingDragEvent;
    constructor(enableToolEvent: () => boolean, modelGetter: () => Promise<RenderableModel | null>, shadowEmitter: ShadowEmitter, scope: paper.PaperScope);
    protected abstract onMouseDown(event: paper.ToolEvent): void;
    protected abstract onMouseDrag(event: paper.ToolEvent): void;
    protected abstract onMouseUp(event: paper.ToolEvent): void;
    private onMouseDownSelf;
    private flushPendingDrag;
    private onMouseDragSelf;
    private onMouseUpSelf;
}
//# sourceMappingURL=WhiteboardTool.d.ts.map