/**
 * @fileoverview Vulnerability-related models for DeepSource integration.
 * @packageDocumentation
 */
import { VulnerabilitySeverity, PackageVersionType, VulnerabilityReachability, VulnerabilityFixability } from '../types/vulnerability.js';
/**
 * Package information
 * @public
 */
export interface Package {
    id: string;
    name: string;
    ecosystem: string;
    description?: string;
    license?: string;
    repository?: string;
    homepage?: string;
}
/**
 * Package version information
 * @public
 */
export interface PackageVersion {
    id: string;
    package: Package;
    version: string;
    type: PackageVersionType;
    publishedAt?: string;
    directDependencies?: PackageVersion[];
}
/**
 * Vulnerability information
 * @public
 */
export interface Vulnerability {
    id: string;
    cveId: string;
    title: string;
    description: string;
    severity: VulnerabilitySeverity;
    fixable: boolean;
    fixVersion?: string;
    publishedAt: string;
    updatedAt: string;
    references: string[];
    exploitMaturity?: string;
    cvssScore?: number;
    cvssVector?: string;
    cwes?: Array<{
        id: string;
        name: string;
    }>;
    affectedVersionRange?: string;
    patchedVersions?: string[];
    vulnerableVersions?: string[];
    vulnerableFunctions?: string[];
    reachability?: VulnerabilityReachability;
    fixability?: VulnerabilityFixability;
    exploitPredictions?: {
        probability?: number;
        severity?: string;
    };
    advisories?: Array<{
        id: string;
        source: string;
        url: string;
    }>;
    occurrences?: VulnerabilityOccurrence[];
}
/**
 * Vulnerability occurrence information
 * @public
 */
export interface VulnerabilityOccurrence {
    dependency: {
        name: string;
        version: string;
        packageManager: string;
    };
    filePath: string;
    affectedVersionRange: string;
    introducedThrough?: string[];
    fixAvailable?: boolean;
    fixVersion?: string;
    vulnerabilityId?: string;
}
