import { OnInit, ElementRef, AfterViewInit, OnDestroy, ChangeDetectorRef, EventEmitter } from '@angular/core';
import { FlowEditorService } from '../../services/flow-editor.service';
import { FlowExecutorService } from '../../services/flow-executor.service';
import { Step, StepType } from '../../models/step.model';
import { Connection } from '../../models/connection.model';
import * as i0 from "@angular/core";
export declare class FlowEditorComponent implements OnInit, AfterViewInit, OnDestroy {
    private flowEditorService;
    private flowExecutor;
    private changeDetector;
    reteEditor: ElementRef<HTMLDivElement>;
    toggleExecution: EventEmitter<void>;
    stepMoved: EventEmitter<Step>;
    steps: Step[];
    connections: Connection[];
    selectedStepId: number | null;
    executingStepId: number | null;
    showExecutionPanel: boolean;
    legendCollapsed: boolean;
    private readonly STEP_WIDTH;
    private readonly STEP_HEIGHT;
    private nextStepId;
    private isDragging;
    private dragOffset;
    currentScale: number;
    canvasOffset: {
        x: number;
        y: number;
    };
    tempConnection: {
        source: Step;
        sourceType: string;
        mouseX: number;
        mouseY: number;
    } | null;
    private isCreatingConnection;
    editingConnection: Connection | null;
    stepToDelete: Step | null;
    connectionToDelete: Connection | null;
    constructor(flowEditorService: FlowEditorService, flowExecutor: FlowExecutorService, changeDetector: ChangeDetectorRef);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    initializeEditor(): void;
    loadFlowData(): void;
    centerOnStartingStep(): void;
    createExampleFlow(): void;
    createStep(type: StepType, position: [number, number]): Step;
    createConnection(sourceId: number, targetId: number): void;
    setupCanvasEvents(): void;
    updateCanvasTransform(): void;
    selectStep(step: Step): void;
    deleteStep(step: Step): void;
    confirmDeleteStep(): void;
    cancelDeleteStep(): void;
    deleteConnection(connection: Connection): void;
    confirmDeleteConnection(): void;
    cancelDeleteConnection(): void;
    onConnectionClick(event: MouseEvent, connection: Connection): void;
    getConnectionMidpoint(connection: Connection): {
        x: number;
        y: number;
    };
    saveConnectionConditions(updatedConnection: Connection): void;
    closeConditionEditor(): void;
    getConditionPreview(connection: Connection): string;
    getConditionLabel(connection: Connection): string;
    getConditionBoxWidth(connection: Connection): number;
    getConnectionColor(connection: Connection): string;
    isBackwardConnection(connection: Connection): boolean;
    getConnectionDashArray(connection: Connection): string;
    getConnectionMarker(connection: Connection): string;
    updateStep(step: Step): void;
    onStepDragStart(event: MouseEvent, step: Step): void;
    private currentDraggedStep;
    private handleMouseMove;
    private handleMouseUp;
    onStepDragEnd(): void;
    getConnectionPath(connection: Connection): string;
    onZoomIn(): void;
    onZoomOut(): void;
    onResetView(): void;
    onAutoArrange(): void;
    private autoArrangeSteps;
    private fitToView;
    toggleExecutionPanel(): void;
    runFlow(): void;
    ngOnDestroy(): void;
    onSocketMouseDown(event: {
        event: MouseEvent;
        step: Step;
        type: string;
    }): void;
    onSocketMouseEnter(event: {
        event: MouseEvent;
        step: Step;
        type: string;
    }): void;
    onSocketMouseLeave(event: MouseEvent): void;
    private handleConnectionMouseMove;
    private handleConnectionMouseUp;
    private canCreateConnection;
    getTempConnectionPath(): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<FlowEditorComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<FlowEditorComponent, "app-flow-editor", never, {}, { "toggleExecution": "toggleExecution"; "stepMoved": "stepMoved"; }, never, never, true, never>;
}
//# sourceMappingURL=flow-editor.component.d.ts.map