/**
 * RepoPilot SDK — TypeScript
 *
 * AI-powered SDK for scanning, indexing, and querying enterprise Java codebases.
 */

// Core types
export {
  NodeType,
  EdgeType,
  type NodeId,
  type SourceLocation,
  type GraphNode,
  type GraphEdge,
  type ContextItem,
  type StructuredContext,
} from "./types";

// Configuration
export {
  type ScanConfig,
  type QueryConfig,
  DEFAULT_SCAN_CONFIG,
  DEFAULT_QUERY_CONFIG,
} from "./config";

// Errors
export {
  RepoPilotError,
  ParseError,
  IndexCorruptedError,
  IndexVersionError,
  PluginError,
} from "./errors";

// Graph
export { KnowledgeGraph } from "./graph/knowledge-graph";
export { RepoIndex } from "./graph/index";
export { makeNodeId, makeFileNode, makePackageNode } from "./graph/model";

// Scanner
export { RepoScanner } from "./scanner/scanner";
export { discoverJavaFiles } from "./scanner/discovery";

// Query
export { QueryEngine } from "./query/engine";

// Plugins
export { type PatternPlugin } from "./plugins/base";
export { PluginRegistry } from "./plugins/registry";
export { CBSSchemaPlugin } from "./plugins/cbs-schema";
export { EJBComponentPlugin } from "./plugins/ejb-component";
export { ConstantPoolPlugin } from "./plugins/constant-pool";

// Module tree
export { buildModuleTree, getLeafModules, getParentModulesBottomUp } from "./module-tree";
export type { ModuleNode } from "./module-tree";
