import { type CSSProperties, type ReactNode } from "react";
import type { ConfigStatusResult } from "../../workflow/configStatus";
import type { WorkflowEdge as WorkflowEdgeType, WorkflowNode as WorkflowNodeType } from "../../workflow/types";
export interface FlowNodeIconSlots {
    statusValid?: ReactNode;
    statusWarning?: ReactNode;
    statusError?: ReactNode;
    statusUnconfigured?: ReactNode;
    delete?: ReactNode;
    running?: ReactNode;
    trigger?: ReactNode;
    action?: ReactNode;
}
export interface FlowNodeProps {
    node: WorkflowNodeType;
    className?: string;
    style?: CSSProperties;
    /** Canvas viewport — used to scale drag deltas. */
    viewport?: {
        zoom: number;
        x: number;
        y: number;
    };
    isLockMode?: boolean;
    isConfigOpen?: boolean;
    /** Pre-computed config status (from `getNodeConfigStatus`). */
    configStatus?: ConfigStatusResult;
    /** Edges, used to highlight ports whose incoming/outgoing edge is selected. */
    edges?: WorkflowEdgeType[];
    /** Shared connection-in-progress state, passed down from the canvas. */
    connectingFrom?: {
        nodeId: string;
        portId: string;
        portType: "input" | "output";
    } | null;
    /** Slot overrides for the handful of internal icons. */
    icons?: FlowNodeIconSlots;
    onSelect?: (id: string) => void;
    onDelete?: (id: string) => void;
    onPositionChange?: (id: string, position: {
        x: number;
        y: number;
    }) => void;
    onStartConnecting?: (nodeId: string, portId: string, portType: "input" | "output") => void;
    onEndConnecting?: (target: {
        nodeId: string;
        portId: string;
        portType: "input" | "output";
    } | null) => void;
    validateConnection?: (targetNodeId: string, targetPortId: string, targetPortType: "input" | "output") => {
        valid: boolean;
        reason?: string;
    };
}
export declare const FlowNode: import("react").ForwardRefExoticComponent<FlowNodeProps & import("react").RefAttributes<HTMLDivElement>>;
export declare const FLOW_NODE_WIDTH = 368;
//# sourceMappingURL=FlowNode.d.ts.map