import { Connection, ConnectionPoint } from '../workflow-designer.types'; import { WorkflowDesignerState } from '../workflow-designer.state'; import { NodeManagementService } from './node-management.service'; import * as i0 from "@angular/core"; /** * ⚠️ **NOT ON THE LIVE PATH.** The only class that injects this is * `TransformerService`, which is itself injected by nothing. * * It duplicates connection logic that lives in `WorkflowDesignerState`, and the * two copies have **drifted apart**: * * - `connectionRules` here additionally allows `stage → form`; `state` does not. * - `getConnectionData` / `getConnectionPathData` here add `+ 40` to the * swimlane offset; `state` and the render template do not. * * Neither divergence is currently visible to users, precisely because this file * does not run. Make connection changes in `WorkflowDesignerState`. * * @see ./docs/06-known-issues.md section A */ export declare class ConnectionService { private state; private nodeService; private draggingConnectionData; private readonly connectionRules; constructor(state: WorkflowDesignerState, nodeService: NodeManagementService); /** * Start a new connection drag operation */ startConnectionDrag(point: ConnectionPoint, swimlaneIndex: number, globalX: number, globalY: number): void; /** * Update the position of the dragging connection */ updateConnectionDrag(currentX: number, currentY: number): void; /** * End the current connection drag operation */ endConnectionDrag(): void; /** * Check if a connection drag is in progress */ isConnectionDragging(): boolean; /** * Get the current connection path data for rendering */ getConnectionPathData(): { startX: number; startY: number; endX: number; endY: number; sourceSwimlaneIndex: number; } | null; /** * Create a new connection between nodes */ createConnection(targetNodeId: string, targetPointId: string, targetSwimlaneIndex: number): Connection | null; /** * Get the path data for rendering a saved connection */ getConnectionData(connection: Connection): { startX: number; startY: number; endX: number; endY: number; sourceSwimlaneIndex: number; targetSwimlaneIndex: number; } | null; /** * Calculate a path for orthogonal connection rendering */ getOrthogonalPath(startX: number, startY: number, endX: number, endY: number, pointType: 'top' | 'right' | 'bottom' | 'left'): string; /** * Check if a connection is allowed between node types */ canConnect(sourceNodeType: string, targetNodeType: string): boolean; /** * Get allowed node types for the current dragging connection */ getAllowedTargetNodeTypes(): string[]; /** * Delete a connection by ID */ deleteConnection(connectionId: string): boolean; /** * Delete all connections associated with a node */ deleteConnectionsForNode(nodeId: string): void; /** * Get the current connection drag data */ getConnectionDragData(): { sourcePoint?: ConnectionPoint; sourceSwimlaneIndex?: number; startX?: number; startY?: number; currentX?: number; currentY?: number; }; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; }