import { EdgeProps } from 'reactflow';
import { JSX as JSX_2 } from 'react/jsx-runtime';
import { NodeProps } from 'reactflow';
import { NodeTypes } from 'reactflow';

export declare const ActionNode: ({ id, data }: NodeProps) => JSX_2.Element;

declare interface AddStepContext {
    edgeId: string;
    nodeId: string;
    sourceNodeId: string;
    targetNodeId: string;
    position: 'between';
    referenceNodeId: string;
    referenceNodeType?: string;
    stepVisibility?: unknown;
    filterId?: string;
    branch?: string;
}

export declare const AddTriggerNode: () => JSX_2.Element;

export declare const ApprovalNode: ({ id, data }: NodeProps) => JSX_2.Element;

export declare const builtInNodeTypes: NodeTypes;

declare const DelayNode_2: ({ id, data }: NodeProps) => JSX_2.Element;
export { DelayNode_2 as DelayNode }

export declare const EdgeWithPlusLabel: ({ id: edgeId, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, source, target, data, }: EdgeProps<EdgeWithPlusLabelData>) => JSX_2.Element;

declare interface EdgeWithPlusLabelData {
    label?: string;
    onAddStepClick?: (sourceNodeId: string, context: AddStepContext) => void;
    referenceNodeType?: string;
    stepVisibility?: unknown;
}

export declare const EndNode: () => JSX_2.Element;

export declare const FilterNode: ({ id, data }: NodeProps) => JSX_2.Element;

export declare const GatewayBranchEdge: ({ id, source, target, sourceX, sourceY, targetX, targetY, style, markerEnd, data, }: EdgeProps<GatewayBranchEdgeData>) => JSX_2.Element;

declare interface GatewayBranchEdgeData {
    label?: string;
    branch?: string;
    isFirst?: boolean;
    filterId?: string;
    onAddStepClick?: (sourceNodeId: string, context: AddStepContext) => void;
    /** When true, route as a vertical rail (sourceX → down to targetY → right to target). Default: horizontal fan-out. */
    verticalRouting?: boolean;
}

export declare const LabelPlusEdge: ({ id, sourceX, sourceY, targetX, targetY, source, target, data, }: EdgeProps<LabelPlusEdgeData>) => JSX_2.Element;

declare interface LabelPlusEdgeData {
    label?: string;
    onAddStepClick?: (sourceNodeId: string, context: AddStepContext) => void;
    referenceNodeType?: string;
    stepVisibility?: unknown;
    showPlus?: boolean;
}

export declare const NotificationNode: ({ id, data }: NodeProps) => JSX_2.Element;

export declare const PlainEdge: ({ id, sourceX, sourceY, targetX, targetY }: EdgeProps) => JSX_2.Element;

export declare const PlusEdge: ({ id, sourceX, sourceY, targetX, targetY, source, target, data, }: EdgeProps<PlusEdgeData>) => JSX_2.Element;

declare interface PlusEdgeData {
    onAddStepClick?: (sourceNodeId: string, context: AddStepContext) => void;
    referenceNodeType?: string;
    stepVisibility?: unknown;
    filterId?: string;
    branch?: string;
}

export declare const StartNode: () => JSX_2.Element;

export declare const TriggerNode: ({ data }: NodeProps) => JSX_2.Element;

export { }
