import { Position, WorkflowObject, Action, ConnectionPoint } from '../models/types';
import * as i0 from "@angular/core";
export interface ConnectionEndpoints {
    startPoint: ConnectionPoint;
    endPoint: ConnectionPoint;
}
export declare class ConnectionService {
    private workflowState;
    private canvasState;
    private nodeFinder;
    private rendering;
    private orthogonalRouter;
    private segmentInteraction;
    private connectionEndpoints;
    startConnection(sourceNode: WorkflowObject, point: Position): void;
    updateConnectionPreview(point: Position): void;
    finalizeConnection(point: Position): void;
    updateConnectionsForNode(nodeId: string): void;
    private determineEndSide;
    /**
     * Handles clicking on a connection segment
     */
    handleSegmentClick(point: Position): void;
    /**
     * Updates segment position during drag
     */
    handleSegmentDrag(point: Position): void;
    /**
     * Completes segment drag operation
     */
    finishSegmentDrag(): void;
    /**
     * Gets cursor style for a segment
     */
    getSegmentCursor(connectionId: string, segmentIndex: number): string;
    getConnectionPath(connection: Action): string;
    private canStartConnection;
    private canConnect;
    private hasConnection;
    getPreviewPath(): string;
    hasOutgoingConnections(nodeId: string): boolean;
    getConnectionPoint(node: WorkflowObject, type: 'input' | 'output'): Position;
    recalculateConnectionPoints(source: WorkflowObject, target: WorkflowObject, existingPoints: Position[]): Position[];
    findTargetNode(point: Position): WorkflowObject | null;
    static ɵfac: i0.ɵɵFactoryDeclaration<ConnectionService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ConnectionService>;
}
