/**
 * Project Model Builder — Assembles the full project model from source files.
 *
 * Orchestrates middleware detection, auth imports, project context, and
 * detector context into a single ProjectModel used by the scan pipeline.
 */
import type { ScanFile, DetectorContext } from '../shared/types';
import type { ProjectContext } from './project-context';
import { type MiddlewareAuthConfig } from './middleware-detector';
import { type FileAuthImports } from './imported-auth-detector';
import type { ContextEngineResult } from './taint-types';
import type { ModuleGraphStats } from './module-graph';
export interface RouteDiscoveryStats {
    totalRoutes: number;
    authedRoutes: number;
    publicRoutes: number;
    unprotectedRoutes: number;
    frameworksDetected: string[];
    duration: number;
}
export interface ProjectModel {
    contextEngine: ContextEngineResult;
    middlewareConfig: MiddlewareAuthConfig;
    fileAuthImports: Map<string, FileAuthImports>;
    detectorContext: DetectorContext;
    taintStats: TaintAnalysisStats;
    routeStats: RouteDiscoveryStats;
    moduleGraphStats?: ModuleGraphStats;
}
/**
 * Build the full project model from source files.
 * Detects auth middleware, file auth imports, project context, and detector context.
 */
export declare function buildProjectModel(files: ScanFile[]): ProjectModel;
export interface TaintAnalysisStats {
    filesAnalyzed: number;
    filesWithSources: number;
    filesWithTaintPaths: number;
    totalSources: number;
    totalTaintedVars: number;
    totalTaintPaths: number;
    unsanitisedPaths: number;
    sanitisedPaths: number;
    totalSanitisers: number;
    sourceTypeBreakdown: Record<string, number>;
    sinkTypeBreakdown: Record<string, number>;
    duration: number;
}
/**
 * Build a DetectorContext from ProjectContext
 * This provides rich context to Layer 2 detectors for smarter decisions
 */
export declare function buildDetectorContext(projectContext: ProjectContext, middlewareConfig: MiddlewareAuthConfig | undefined): DetectorContext;
/**
 * Build file-specific context for a single file
 * This is merged with the project-level DetectorContext
 */
export declare function buildFileDetectorContext(baseContext: DetectorContext, filePath: string): DetectorContext;
/**
 * Check if file is a configuration file
 */
export declare function isConfigFile(filePath: string): boolean;
//# sourceMappingURL=index.d.ts.map