import { Connection, ConnectionPoint, Node, SwimlaneItem, ToolType } from './workflow-designer.types';
import { Tag } from '../../models/Tag';
import { WorkflowStage } from '../../models/WorkflowStage';
import { Workflow } from '../../models/Workflow';
import { SwimLane } from '../../models/SwimLane';
import { WorkflowAction } from '../../models/WorkflowAction';
import * as i0 from "@angular/core";
export declare class WorkflowDesignerState {
    swimlanes: SwimlaneItem[];
    startNodeId: string | null;
    connections: Connection[];
    draggingConnectionData: {
        sourcePoint?: ConnectionPoint;
        sourceSwimlaneIndex?: number;
        startX?: number;
        startY?: number;
        currentX?: number;
        currentY?: number;
    };
    workflowFormId: string | null;
    workflowFormName: string | null;
    workflowId: string | null;
    workflow: Workflow | null;
    swimlaneRecord: Record<string, SwimLane>;
    stageRecord: Record<string, WorkflowStage>;
    actionRecord: Record<string, WorkflowAction>;
    setWorkflowId(id: string): void;
    laneIdToIndexMap: Map<string, number>;
    private readonly connectionRules;
    setWorkflowForm(formId: string | null, formName: string | null): void;
    addSwimlane(name: string, tags: Tag[]): void;
    registerLaneMapping(laneId: string, swimlaneIndex: number): void;
    generateConnectionPoints(node: Node): ConnectionPoint[];
    addNode(swimlaneIndex: number, type: ToolType, x: number, y: number, stageData?: Partial<WorkflowStage>, workflowData?: {
        id: string;
        name: string;
    }, useExistingId?: boolean): Node | null;
    getNodeCount(): number;
    findNodeById(id: string): {
        node: Node;
        swimlaneIndex: number;
    } | null;
    startConnectionDrag(point: ConnectionPoint, swimlaneIndex: number, globalX: number, globalY: number): void;
    updateConnectionDrag(currentX: number, currentY: number): void;
    endConnectionDrag(): void;
    isConnectionDragging(): boolean;
    getConnectionPathData(): {
        startX: number;
        startY: number;
        endX: number;
        endY: number;
        sourceSwimlaneIndex: number;
    } | null;
    createConnection(targetNodeId: string, targetPointId: string, targetSwimlaneIndex: number): Connection | null;
    getConnectionData(connection: Connection): {
        startX: number;
        startY: number;
        endX: number;
        endY: number;
        sourceSwimlaneIndex: number;
        targetSwimlaneIndex: number;
    } | null;
    canConnect(sourceNodeType: string, targetNodeType: string): boolean;
    getAllowedTargetNodeTypes(): string[];
    updateSwimlane(index: number, name: string, tags: Tag[]): void;
    transformToWorkflowModel(): Workflow;
    getConnectionPointType(pointId: string): 'top' | 'right' | 'bottom' | 'left' | undefined;
    loadedObjectIds: {
        [key: string]: string;
    };
    registerLoadedObject(id: string, code: string): void;
    wasLoadedFromApi(id: string): boolean;
    getCodeForObject(id: string): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<WorkflowDesignerState, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<WorkflowDesignerState>;
}
