import type { Feature, Repository, AgentRun } from '../../../../packages/core/src/domain/generated/output.js';
import type { CanvasNodeType } from '../components/features/features-canvas/index.js';
import type { Edge } from '@xyflow/react';
import type { ApplicationWithStatus } from '../../../../packages/core/src/application/use-cases/applications/list-applications.use-case.js';
export interface FeatureWithRun {
    feature: Feature;
    run: AgentRun | null;
}
/**
 * Builds React Flow nodes and edges from persisted repositories and features.
 *
 * Features whose repositoryPath is not covered by any real repository row are
 * grouped under a synthetic "virtual" repository node
 * (id: `virtual-repo-${repositoryPath}`). This ensures the dashboard never
 * renders empty when features exist but their repository rows are missing.
 */
export interface BuildGraphNodesOptions {
    /** Whether evidence collection is enabled (global workflow setting) */
    enableEvidence?: boolean;
    /** Whether evidence is committed to the PR body (global workflow setting) */
    commitEvidence?: boolean;
    /** Whether CI watch/fix loop is enabled (global workflow setting) */
    ciWatchEnabled?: boolean;
    /** Git info (branch, commit message, committer, behind count) keyed by repository path */
    repoGitInfo?: Map<string, {
        branch: string;
        commitMessage: string;
        committer: string;
        behindCount: number | null;
    }>;
    /** Git info resolution status keyed by repository path */
    repoGitStatus?: Map<string, 'loading' | 'ready' | 'not-a-repo'>;
    /** Applications to render on the canvas. Callers are expected to filter
     *  this list to only include applications that are referenced by at least
     *  one feature's `applicationId` so the canvas stays uncluttered for users
     *  who do not use SDD mode. */
    applications?: ApplicationWithStatus[];
}
export declare function buildGraphNodes(repositories: Repository[], featuresWithRuns: FeatureWithRun[], options?: BuildGraphNodesOptions): {
    nodes: CanvasNodeType[];
    edges: Edge[];
};
//# sourceMappingURL=build-graph-nodes.d.ts.map