import { SymlinkMap } from "../../extractor/types"; import { AnalyzedPackageWithVersion, ImageAnalysis, OSRelease } from "../types"; import { SymlinkGraph } from "./path-canonicalization"; export interface ApkPackageOwnership { distroId: string; packageName: string; packageVersion: string; originPackage: string; evidencePaths: string[]; } export type MatchKind = "exact" | "directory"; export interface PathOwnerMatch { owner: AnalyzedPackageWithVersion; matchKind: MatchKind; /** Number of matched path segments; a deeper directory match outranks a shallower one. */ prefixLength: number; } interface DirectoryTrieNode { owners: AnalyzedPackageWithVersion[]; children: Map; } export interface ApkPathIndex { exactFileOwners: Map; directoryTrie: DirectoryTrieNode; } export declare function isChainguardDistro(osRelease?: OSRelease): boolean; export declare function toSymlinkGraph(symlinks?: SymlinkMap): SymlinkGraph; export declare function buildApkPathIndex(packages: AnalyzedPackageWithVersion[], symlinkGraph: SymlinkGraph): ApkPathIndex; export declare function resolveOwnerForEvidencePath(evidencePath: string, index: ApkPathIndex, symlinkGraph: SymlinkGraph): PathOwnerMatch | undefined; /** * Resolve APK package ownership for app evidence paths on Wolfi/Chainguard images. * * Per Chainguard's scanner spec, an app dependency is owned by an APK package * only when its evidence paths are wholly contained in that package's declared * paths; a dependency with any unowned path is not covered by Chainguard's * advisory data and must keep its findings. This fact drives downstream * suppression, so we skip it rather than guess and risk suppressing real * vulnerabilities in user-added software. * https://github.com/chainguard-dev/vulnerability-scanner-support/blob/main/docs/scanning_implementation.md */ export declare function resolveApkOwnership(evidencePaths: string[], index: ApkPathIndex, symlinkGraph: SymlinkGraph, osRelease: OSRelease): ApkPackageOwnership | undefined; export declare function getApkPackagesFromResults(results?: ImageAnalysis[]): AnalyzedPackageWithVersion[]; export {};