/**
 * UpClickCreateLineHandler - 线条创建起点处理器（mouseUp事件）
 *
 * ====== 所属链路说明 ======
 * 该处理器属于「画笔/线条创建链路」(CreateLineClickMode)。
 *
 * 完整链路调用链：
 * 1. CreateLineClickMode (点击模式入口)
 *    - 条件：当前工具为 ToolEnum.LINE 时激活
 *    - 包含 CreateLineClickProcessor
 *
 * 2. CreateLineClickProcessor (点击处理器)
 *    - 注册了三个处理器：
 *      - ClickInsertBrokenPointLineHandler (mouseDown处理器)
 *      - ClickCreateEndLineHandler (mouseDown处理器)
 *      - UpClickCreateLineHandler (mouseUp处理器) ← 当前文件
 *
 * 3. 起点创建时机：
 *    - 当用户在没有正在创建线条的状态下释放鼠标时触发
 *    - 用于开始创建一条新的线条
 *    - 检测鼠标释放时的容器，在其内部创建线条
 *
 * ====== 核心逻辑说明 ======
 *
 * enable() 方法：
 * - 判断当前是否没有正在创建的线条
 * - 只有在没有线条创建进行中时才会激活
 * - 这确保了只有在开始新线条时才触发
 *
 * handle() 方法：
 * - 生成新线条的唯一ID
 * - 检测鼠标位置所在的容器
 * - 根据当前工具的 shapeType 选择对应的创建处理器
 * - 创建线条节点并添加到节点管理器
 * - 设置当前正在创建的线条
 *
 * makeupLineProps() 方法：
 * - 遍历所有线条创建处理器（直线、曲线、折线、多段线）
 * - 找到支持当前 shapeType 的处理器
 * - 调用该处理器计算线条的初始属性
 *
 * ====== 与其他处理器的协作 ======
 * - ClickInsertBrokenPointLineHandler: 处理折线断点插入
 * - ClickCreateEndLineHandler: 处理线条创建完成
 * - 当前处理器: 处理线条创建的起点/开始
 */
import { ClickHandler } from "../../../../basic/ClickHandler";
import { InteractiveEvent } from "../../../../../../common";
import { AppEventContext } from "../../../../../../app";
import { AbsProps } from "../../../../../../graphics";
import { AbsLineCreateHandler } from "../../line/handler/AbsLineCreateHandler";
import { GraphicNode } from "@/graphics";
export declare class UpClickCreateLineHandler extends ClickHandler {
    /**
     * 线条创建处理器列表
     *
     * 支持的线条类型：
     * - LineCreateHandler: 直线
     * - CurveCreateHandler: 曲线
     * - BrokenLineCreateHandler: 折线
     * - PolyLineCreateHandler: 多段线
     */
    handlers: AbsLineCreateHandler[];
    /**
     * enable - 判断当前处理器是否应该激活
     *
     * 激活条件：
     * - 必须没有正在创建的线条 (creatingLine === null)
     *
     * 设计意图：
     * - 这确保了只有在"开始"创建新线条时才触发
     * - 避免在创建过程中（已有 creatingLine）重复创建
     */
    enable(event: InteractiveEvent, eventCtx: AppEventContext): boolean;
    /**
     * handle - 开始创建新线条
     *
     * 执行流程：
     * 1. 生成新线条的唯一节点ID
     * 2. 检测鼠标位置所在的容器（如果悬停在容器上则在其内部创建）
     * 3. 计算线条的初始属性（起点位置等）
     * 4. 创建节点信息对象
     * 5. 执行 StartLog 开启日志
     * 6. 执行 AddNodeLog 添加节点
     * 7. 获取刚创建的线条节点
     * 8. 设置为当前正在创建的线条（供其他处理器使用）
     *
     * 容器检测说明：
     * - DetectorEnum.HoverOnContainer 检测鼠标是否悬停在容器上
     * - 如果悬停在容器内，线条会在该容器内创建
     * - 否则在根节点下创建
     */
    handle(event: InteractiveEvent, ctx: AppEventContext): void;
    /**
     * makeupLineProps - 计算新线条的初始属性
     *
     * 执行流程：
     * 1. 构建起始连接信息（包含鼠标全局坐标）
     * 2. 遍历所有线条创建处理器
     * 3. 找到支持当前 shapeType 的处理器
     * 4. 调用处理器的 computeDownProps 计算线条属性
     *
     * @param event - 交互事件（包含鼠标位置）
     * @param ctx - 应用事件上下文
     * @param parent - 父容器节点
     * @returns 线条属性数组，如果找不到对应处理器则返回 null
     */
    protected makeupLineProps(event: InteractiveEvent, ctx: AppEventContext, parent: GraphicNode): Partial<AbsProps>[] | null;
}
//# sourceMappingURL=UpClickCreateLineHandler.d.ts.map