import { AstAnalyser, type Warning, type Dependency, type ReportOnFile } from "@nodesecure/js-x-ray";
import { type LocatedManifestManager } from "@nodesecure/mama";
export type Path = "NONE" | "EntryFileAnalyser" | "All" | "Both";
export interface SourceCodeAggregator {
    path: Path;
    readonly consumed: boolean;
    push(report: ReportOnFile & {
        file: string;
    }): void;
}
export interface SourceCodeEntries {
    /**
     * Source files from package.json
     */
    manifest: string[];
    /**
     * All JavaScript source files from tarball
     */
    javascript: string[];
}
export declare class SourceCodeReport implements SourceCodeAggregator {
    #private;
    path: Path;
    warnings: Warning[];
    dependencies: Record<string, Record<string, Dependency>>;
    minified: string[];
    flags: {
        hasExternalCapacity: boolean;
    };
    get consumed(): boolean;
    push(report: ReportOnFile & {
        file: string;
    }): void;
}
export interface SourceCodeScannerOptions<T> {
    reportInitiator?: () => T;
    astAnalyser?: AstAnalyser;
}
export declare class SourceCodeScanner<T extends SourceCodeAggregator = SourceCodeReport> {
    #private;
    manifest: LocatedManifestManager;
    constructor(manifest: LocatedManifestManager, options?: SourceCodeScannerOptions<T>);
    iterate(entries: SourceCodeEntries): Promise<T>;
}
//# sourceMappingURL=SourceCodeScanner.class.d.ts.map