/**
 * 节点定义统一导出
 * 所有节点使用统一的 BaseNode 组件渲染
 * 通过 renderConfig 配置不同的样式和行为
 */

import BaseNode from './components/BaseNode';
import { StartEventNodeDefinition } from './StartEventNode';
import { EndEventNodeDefinition } from './EndEventNode';
import { JenkinsBuildNodeDefinition } from './JenkinsBuildNode';
import { NotificationNodeDefinition } from './NotificationNode';
import { ApprovalNodeDefinition } from './ApprovalNode';
import type { WorkflowNodeDefinition } from './types';

/**
 * 所有节点定义的注册表（给 NodePanel 使用）
 */
export const NODE_DEFINITIONS: WorkflowNodeDefinition[] = [
    StartEventNodeDefinition,
    EndEventNodeDefinition,
    JenkinsBuildNodeDefinition,
    NotificationNodeDefinition,
    ApprovalNodeDefinition,
];

/**
 * React Flow 节点类型映射（给 FlowCanvas 使用）
 * ✨ 所有节点都使用 BaseNode 组件，通过 renderConfig 配置渲染
 */
export const nodeTypes = {
    START_EVENT: BaseNode,
    END_EVENT: BaseNode,
    JENKINS_BUILD: BaseNode,
    NOTIFICATION: BaseNode,
    APPROVAL: BaseNode,
};

/**
 * 单独导出（按需导入）
 */
export {
    // 通用组件
    BaseNode,
    
    // 定义
    StartEventNodeDefinition,
    EndEventNodeDefinition,
    JenkinsBuildNodeDefinition,
    NotificationNodeDefinition,
    ApprovalNodeDefinition,
};

// 导出类型
export * from './types';
