/**
 * Architecture Analysis Types
 *
 * These types model the higher-level software architecture layer:
 * packages (logical groupings of files) and layers (architectural tiers).
 * All populated only when enableArchitecture=true in config.
 */
export interface ArchPackage {
    id: string;
    name: string;
    path: string;
    source: 'manifest' | 'directory';
    language?: string;
    manifestPath?: string;
    version?: string;
    externalDeps?: string[];
    metadata?: Record<string, unknown>;
    updatedAt: number;
}
export interface ArchLayer {
    id: string;
    name: string;
    source: 'auto' | 'config';
    patterns: string[];
    metadata?: Record<string, unknown>;
    updatedAt: number;
}
export interface ArchPackageDep {
    sourcePkg: string;
    targetPkg: string;
    depCount: number;
    files?: Array<{
        from: string;
        to: string;
    }>;
}
export interface ArchLayerDep {
    sourceLayer: string;
    targetLayer: string;
    depCount: number;
}
export interface ArchCoupling {
    packageId: string;
    afferent: number;
    efferent: number;
    instability: number;
    updatedAt: number;
}
export interface ArchitectureResult {
    packages: ArchPackage[];
    layers: ArchLayer[];
    packageDeps: ArchPackageDep[];
    layerDeps: ArchLayerDep[];
    coupling: ArchCoupling[];
    filePackages: Record<string, string[]>;
    fileLayers: Record<string, Array<{
        layerId: string;
        confidence: number;
        matchedPattern: string;
    }>>;
}
export interface ManifestParser {
    /** Unique name for this parser (e.g. "npm", "go", "cargo") */
    name: string;
    /** Manifest filenames this parser handles (e.g. ["package.json"]) */
    manifestFiles: string[];
    /** Primary language for packages detected by this parser */
    language: string;
    /** Returns true if this parser can handle the given manifest file path */
    canParse(manifestPath: string): boolean;
    /** Parse one manifest file and return the package(s) it defines */
    parse(manifestPath: string, projectRoot: string): Promise<ArchPackage[]>;
}
export interface LayerDetector {
    /** Language this detector applies to, or 'any' for universal detectors */
    language: string;
    /** Optional framework specificity (e.g. "django", "rails") */
    framework?: string;
    /**
     * Given all indexed file paths (relative to project root), return
     * layer matches for files this detector recognises.
     */
    detect(files: string[], projectRoot: string, configLayers?: Record<string, string[]>): Promise<ArchLayerMatch[]>;
}
export interface ArchLayerMatch {
    layerName: string;
    filePath: string;
    confidence: number;
    matchedPattern: string;
}
//# sourceMappingURL=types.d.ts.map