/**
 * DbFinishBrokenLineHandler - 折线双击完成处理器
 *
 * ====== 所属链路说明 ======
 * 该处理器属于「画笔/折线双击完成链路」(CreateLineDbClickMode)。
 *
 * 完整链路调用链：
 * 1. CreateLineDbClickMode (双击模式入口)
 *    - 条件：当前工具为 ToolEnum.LINE 时激活
 *    - 包含 CreateLineDbClickProcessor
 *
 * 2. CreateLineDbClickProcessor (双击处理器)
 *    - 注册了一个处理器：
 *      - DbFinishBrokenLineHandler (mouseDown处理器) ← 当前文件
 *
 * 3. 完成时机：
 *    - 当用户双击时触发，用于完成折线的创建
 *    - 与 ClickCreateEndLineHandler 的区别：
 *      - ClickCreateEndLineHandler: 直线/曲线/多段线的单击完成
 *      - DbFinishBrokenLineHandler: 折线的双击完成
 *
 * ====== 核心逻辑说明 ======
 *
 * enable() 方法：
 * - 判断是否存在正在创建的折线
 * - 只有折线类型 (LineShapeType.BrokenLine) 才激活
 * - 直线、曲线、多段线不走这个处理器
 *
 * handle() 方法：
 * - 获取正在创建的折线
 * - 复制当前所有端点
 * - 移除最后一个端点（跟随鼠标的预览终点）
 * - 更新折线数据
 * - 执行 EndLog 结束日志
 * - 清除正在创建的折线状态
 * - 重置预览节点
 * - 将工具切换回默认工具
 *
 * ====== 为什么折线需要特殊处理？ ======
 *
 * 折线的创建流程与其他线条不同：
 * 1. 用户点击设置起点
 * 2. 用户多次点击添加中间断点（由 ClickInsertBrokenPointLineHandler 处理）
 * 3. 用户双击完成折线
 *
 * 关键区别：
 * - 折线的最后一个点是跟随鼠标的"预览终点"
 * - 双击完成时需要移除这个预览终点，保留用户实际点击的断点
 * - 直线/曲线没有预览终点，所以直接单击完成即可
 *
 * ====== 执行流程图示 ======
 *
 * 假设用户绘制折线：点击A → 点击B → 点击C → (鼠标跟随D) → 双击完成
 *
 * points 数组变化：
 * 初始状态：[A, D(preview)]
 * 点击后添加B：[A, B, D(preview)]
 * 点击后添加C：[A, B, C, D(preview)]
 * 双击后移除D：[A, B, C] ← 最终结果
 */
import { ClickHandler } from "@/plugin-pointer";
import { InteractiveEvent } from "@/common";
import { AppEventContext } from "@/app";
export declare class DbFinishBrokenLineHandler extends ClickHandler {
    /**
     * enable - 判断当前处理器是否应该激活
     *
     * 激活条件：
     * 1. 必须存在正在创建的线条
     * 2. 该线条必须是折线类型 (LineShapeType.BrokenLine)
     *
     * 为什么其他线条不走这里？
     * - 直线、曲线、多段线通过 ClickCreateEndLineHandler 单击完成
     * - 折线需要多次点击添加断点，所以用双击区分"添加断点"和"完成创建"
     */
    enable(event: InteractiveEvent, ctx: AppEventContext): boolean;
    /**
     * handle - 双击完成折线创建
     *
     * 执行流程：
     * 1. 获取正在创建的折线对象
     * 2. 复制当前所有端点
     * 3. 移除最后一个端点（预览终点）
     *    - 这是跟随鼠标的临时终点，不是用户实际点击的位置
     * 4. 更新折线数据，保留用户点击的实际断点
     * 5. 执行 EndLog 标记创建完成
     * 6. 清除正在创建的折线状态
     * 7. 重置预览节点
     * 8. 将工具切换回默认工具
     *
     * 关键点：
     * - splice(points.length - 1, 1) 移除数组最后一位
     * - 这就是为什么折线在创建时最后一个点是预览点
     * - 移除预览点后，用户点击的断点全部保留
     */
    handle(event: InteractiveEvent, context: AppEventContext): void;
}
//# sourceMappingURL=DbFinishBrokenLineHandler.d.ts.map