import { AutomationJsonObject, AutomationJsonSchema, AutomationJsonValue } from '../Common'; import type { AutomationNodeVisibilityRule } from '../Nodes'; export declare enum AutomationFlowVariableType { STRING = "string", NUMBER = "number", BOOLEAN = "boolean", DATE = "date", JSON = "json", ARRAY = "array" } export declare enum AutomationNodeKind { TRIGGER = "trigger", ACTION = "action", CONDITION = "condition", AGENT = "agent", TOOL = "tool", MESSAGE = "message", CONTROL = "control" } export declare enum AutomationNodeHandleType { SOURCE = "source", TARGET = "target" } export declare enum AutomationNodeHandlePosition { LEFT = "left", RIGHT = "right", TOP = "top", BOTTOM = "bottom" } export interface AutomationFlowVariable { name: string; description?: string | null; type: AutomationFlowVariableType; isInput: boolean; isOutput: boolean; /** JSON Schema que restringe el valor permitido para la variable. */ schema?: AutomationJsonSchema | null; defaultValue?: AutomationJsonValue; } export interface AutomationFlowViewport { x: number; y: number; zoom: number; } export interface AutomationNodePosition { x: number; y: number; } export declare enum AutomationCanvasAnnotationType { NOTE = "note" } /** Elemento puramente visual del canvas; no participa de la ejecución. */ export interface AutomationCanvasAnnotation { id: string; type: AutomationCanvasAnnotationType; title?: string | null; text: string; position: AutomationNodePosition; width: number; height: number; color: string; metadata?: AutomationJsonObject | null; } export interface AutomationFlowNode { id: string; /** Clave del renderer visual; no representa una regla de negocio. */ type: string; data: AutomationNodeInstance; position: AutomationNodePosition; } export interface AutomationNodeInstance { definitionCode: string; definitionVersion: number; kind: AutomationNodeKind; name: string; values: AutomationJsonObject; metadata?: AutomationJsonObject | null; disabled: boolean; } export interface AutomationFlowEdge { id: string; type: string; source: string; sourceHandle?: string | null; target: string; targetHandle?: string | null; data: AutomationFlowEdgeData; } export interface AutomationFlowEdgeData { label?: string | null; metadata?: AutomationJsonObject | null; } export interface AutomationNodeHandle { id: string; name: string; type: AutomationNodeHandleType; position: AutomationNodeHandlePosition; multiple: boolean; showName: boolean; tags: string[]; showWhen?: AutomationNodeVisibilityRule | null; hideWhen?: AutomationNodeVisibilityRule | null; }