import { ElementRef } from '@angular/core';
import { WorkflowObject, Position, Action, WorkflowObjectType } from '../models/types';
import { ConnectionService } from './connection.service';
import { RenderingService } from './rendering.service';
import { NodeSelectionService } from './node-selection.service';
import { WorkflowPersistenceService } from './wf-persistence.service';
import { NodePreconditionService, PreconditionData } from './node-precondition.service';
import * as i0 from "@angular/core";
export declare class WorkflowFacadeService {
    private workflowState;
    private viewport;
    private nodeInteraction;
    connection: ConnectionService;
    rendering: RenderingService;
    selection: NodeSelectionService;
    private canvasStateService;
    private swimlaneManagement;
    persistence: WorkflowPersistenceService;
    private segmentInteraction;
    preconditionService: NodePreconditionService;
    readonly canvasState: import("@angular/core").Signal<import("./canvas-state.service").CanvasState>;
    readonly workflowObjects: import("@angular/core").Signal<WorkflowObject[]>;
    readonly selectedObjectId: import("@angular/core").Signal<string | null>;
    readonly selectedTool: import("@angular/core").Signal<WorkflowObjectType | null>;
    readonly nodes: import("@angular/core").Signal<WorkflowObject[]>;
    readonly swimlanes: import("@angular/core").Signal<WorkflowObject[]>;
    readonly connections: import("@angular/core").Signal<Action[]>;
    getNodeStyle: (isSelected: boolean) => import("./rendering.service").NodeStyle;
    getConnectionStyle: (isSelected: boolean) => Partial<SVGPathElement["style"]>;
    getStartNodePaths: () => {
        circle: string;
        arrow: string;
    };
    getNodeTransforms: (node: WorkflowObject) => {
        node: string;
        arrow?: string;
        indicator?: string;
    };
    getGridPattern: () => {
        pattern: {
            width: number;
            height: number;
        };
        path: {
            d: string;
            style: Partial<SVGPathElement["style"]>;
        };
    };
    getConnectionPath(points: Position[]): string;
    getConnectionPreviewPath: () => string;
    hasOutgoingConnections: (nodeId: string) => boolean;
    handleSegmentMouseDown(event: MouseEvent, canvasRef: ElementRef<SVGElement>, connectionId: string, segmentIndex: number): void;
    getSegmentCursor(connectionId: string, segmentIndex: number): string;
    handleMouseDown(event: MouseEvent, canvasRef: ElementRef<SVGElement>): void;
    handleMouseMove(event: MouseEvent, canvasRef: ElementRef<SVGElement>): void;
    handleMouseUp(event: MouseEvent, canvasRef: ElementRef<SVGElement>): void;
    handleMouseLeave(): void;
    handleToolSelection(tool: WorkflowObjectType | null): void;
    private handleToolPlacement;
    private createNode;
    finalizeNodeCreation(selectedData: PreconditionData): void;
    handleSwimlaneCreation(point: Position): void;
    private getDefaultSize;
    initializeWorkflow(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<WorkflowFacadeService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<WorkflowFacadeService>;
}
