import type { Connection, Edge, NodeChange, OnMoveEnd, Viewport } from '@xyflow/react';
import type { FeatureNodeType } from '../../common/feature-node/index.js';
import type { RepositoryNodeType } from '../../common/repository-node/index.js';
import type { ApplicationNodeType } from '../../common/application-node/application-node-config.js';
export type CanvasNodeType = FeatureNodeType | RepositoryNodeType | ApplicationNodeType;
export interface FeaturesCanvasProps {
    nodes: CanvasNodeType[];
    edges: Edge[];
    selectedFeatureId?: string | null;
    selectedRepository?: {
        id: string | null;
        path: string | null;
    };
    defaultViewport?: Viewport;
    onNodesChange?: (changes: NodeChange<CanvasNodeType>[]) => void;
    onAddFeature?: () => void;
    onNodeClick?: (event: React.MouseEvent, node: CanvasNodeType) => void;
    onPaneClick?: (event: React.MouseEvent) => void;
    onConnect?: (connection: Connection) => void;
    onCanvasDrag?: () => void;
    onMoveEnd?: OnMoveEnd;
    toolbar?: React.ReactNode;
    /** Show the toolbar even when the canvas is empty (e.g. empty workspace). Defaults to true. */
    showToolbarOnEmpty?: boolean;
    emptyState?: React.ReactNode;
}
export declare function FeaturesCanvas({ nodes, edges, selectedFeatureId, selectedRepository, defaultViewport, onNodesChange, onAddFeature, onConnect, onNodeClick, onPaneClick, onCanvasDrag, onMoveEnd, toolbar, showToolbarOnEmpty, emptyState, }: FeaturesCanvasProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=features-canvas.d.ts.map