import { Form } from '../../../models/Form';
import { Workflow } from '../../../models/Workflow';
import { ConnectionPoint } from '../workflow-designer.types';
import { WorkflowDataService } from '../workflow-data.service';
import * as i0 from "@angular/core";
/**
 * Service for managing various popups in the workflow designer
 */
export declare class PopupService {
    private dataService;
    private _connectionPopupVisible;
    private _connectionPopupPosition;
    private _allowedNodeTypes;
    private _formPopupVisible;
    private _formPopupPosition;
    private _formsList;
    private _isLoadingForms;
    private _selectedNodeForForm;
    private _startNodeFormPopupVisible;
    private _startNodeFormPopupPosition;
    private _subflowPopupVisible;
    private _subflowPopupPosition;
    private _workflowsList;
    private _isLoadingWorkflows;
    private _pendingSubflowPosition;
    private _pendingConnectionSourcePoint;
    private _pendingConnectionSourceSwimlaneIndex;
    constructor(dataService: WorkflowDataService);
    get connectionPopupVisible(): import("rxjs").Observable<boolean>;
    get connectionPopupPosition(): import("rxjs").Observable<{
        x: number;
        y: number;
    }>;
    get allowedNodeTypes(): import("rxjs").Observable<string[]>;
    get formPopupVisible(): import("rxjs").Observable<boolean>;
    get formPopupPosition(): import("rxjs").Observable<{
        x: number;
        y: number;
    }>;
    get formsList(): import("rxjs").Observable<Form[]>;
    get isLoadingForms(): import("rxjs").Observable<boolean>;
    get selectedNodeForForm(): import("rxjs").Observable<string | null>;
    get startNodeFormPopupVisible(): import("rxjs").Observable<boolean>;
    get startNodeFormPopupPosition(): import("rxjs").Observable<{
        x: number;
        y: number;
    }>;
    get subflowPopupVisible(): import("rxjs").Observable<boolean>;
    get subflowPopupPosition(): import("rxjs").Observable<{
        x: number;
        y: number;
    }>;
    get workflowsList(): import("rxjs").Observable<Workflow[]>;
    get isLoadingWorkflows(): import("rxjs").Observable<boolean>;
    get pendingSubflowPosition(): import("rxjs").Observable<{
        swimlaneIndex: number;
        x: number;
        y: number;
    } | null>;
    get pendingConnectionSourcePoint(): import("rxjs").Observable<ConnectionPoint | null>;
    get pendingConnectionSourceSwimlaneIndex(): import("rxjs").Observable<number | null>;
    /**
     * Show connection creation popup
     */
    showConnectionPopup(x: number, y: number, allowedNodeTypes: string[]): void;
    /**
     * Hide connection creation popup
     */
    hideConnectionPopup(): void;
    /**
     * Store connection source data for use in other popups
     */
    storeConnectionSourceData(point: ConnectionPoint, swimlaneIndex: number): void;
    /**
     * Clear connection source data
     */
    clearConnectionSourceData(): void;
    /**
     * Show form selection popup for a stage
     */
    showFormPopup(x: number, y: number, nodeId: string): Promise<void>;
    /**
     * Hide form selection popup
     */
    hideFormPopup(): void;
    /**
     * Show workflow form selection popup for start node
     */
    showStartNodeFormPopup(x: number, y: number): Promise<void>;
    /**
     * Hide workflow form selection popup
     */
    hideStartNodeFormPopup(): void;
    /**
     * Show subflow selection popup
     */
    showSubflowPopup(x: number, y: number, swimlaneIndex: number): Promise<void>;
    /**
     * Hide subflow selection popup
     */
    hideSubflowPopup(): void;
    getCurrentValues(): {
        connectionPopupVisible: boolean;
        connectionPopupPosition: {
            x: number;
            y: number;
        };
        allowedNodeTypes: string[];
        formPopupVisible: boolean;
        formPopupPosition: {
            x: number;
            y: number;
        };
        formsList: Form[];
        isLoadingForms: boolean;
        selectedNodeForForm: string | null;
        startNodeFormPopupVisible: boolean;
        startNodeFormPopupPosition: {
            x: number;
            y: number;
        };
        subflowPopupVisible: boolean;
        subflowPopupPosition: {
            x: number;
            y: number;
        };
        workflowsList: Workflow[];
        isLoadingWorkflows: boolean;
        pendingSubflowPosition: {
            swimlaneIndex: number;
            x: number;
            y: number;
        } | null;
        pendingConnectionSourcePoint: ConnectionPoint | null;
        pendingConnectionSourceSwimlaneIndex: number | null;
    };
    static ɵfac: i0.ɵɵFactoryDeclaration<PopupService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<PopupService>;
}
