import type { GraphEdge } from "./graph-builder.js"; import type { ParsedFile } from "./tree-sitter.js"; import type { SeedFlow } from "./route-extractor.js"; export interface Flow { name: string; files: string[]; repos: string[]; primaryModel?: string; edgeCount: number; isHub?: boolean; } /** * Groups connected files into business-level "flows". * * Two-phase strategy: * 1. Seed flows from FE component directories (human-labelled business features) * so that flows like "Pre Authorizations" and "Remote Checks" appear with * their real names and include both FE components and BE models/controllers. * 2. Run Louvain community detection on the remaining files that weren't * claimed by any seed, then merge with hub flows. * * @param seeds Optional seed flows from extractSeedFlows(). Pass an empty * array (or omit) to fall back to pure Louvain behaviour. * @param skipOrphanClustering When true, skip Phase 3 Louvain on unseeded files. * Use this when LLM-first discovery seeded all real features — Louvain only * produces noise clusters (e.g. "verified_badge", "collection_serializer") * from the unclaimed files. Hub flows from Phase 2 are still generated. */ export declare function detectFlows(edges: GraphEdge[], parsedFiles: ParsedFile[], seeds?: SeedFlow[], skipOrphanClustering?: boolean): Flow[]; //# sourceMappingURL=flow-detector.d.ts.map