pub mod changes;
mod cost;
mod engine;
mod engine_config;
mod engine_matching;
mod engine_rules;
pub mod graph;
pub mod incremental;
pub mod multi;
mod multi_engine;
mod result;
pub mod traits;
pub use cost::CostModel;
pub use engine::{DiffEngine, LargeSbomConfig};
pub use graph::{GraphDiffConfig, diff_dependency_graph};
pub use incremental::{
CacheHitType, CacheStats, ChangedSections, DiffCache, DiffCacheConfig, DiffCacheKey,
IncrementalDiffEngine, IncrementalDiffResult, SectionHashes,
};
pub use multi::{
ComparisonResult, ComplianceScoreEntry, ComplianceSnapshot, ComponentEvolution,
DependencySnapshot, DivergenceType, DivergentComponent, EvolutionSummary,
InconsistentComponent, IncrementalChange, LicenseChange as TimelineLicenseChange,
LicenseChangeType, MatrixResult, MultiDiffResult, MultiDiffSummary, SbomCluster,
SbomClustering, SbomInfo, SecurityImpact, TimelinePair, TimelineResult, VariableComponent,
VersionAtPoint, VersionChangeType, VersionSpread, VulnerabilityMatrix, VulnerabilitySnapshot,
};
pub use multi_engine::MultiDiffEngine;
#[cfg(feature = "tui")]
pub(crate) use multi_engine::classify_version_strings;
#[cfg(feature = "tui")]
pub(crate) use multi_engine::strip_purl_version;
pub use result::ml_metric_higher_is_better;
pub use result::{
CategoryDelta, ChangeSet, ChangeType, ComponentChange, ComponentLicenseChange,
ConfidenceInterval, DependencyChange, DependencyChangeType, DependencyGraphChange, DiffResult,
DiffSummary, FieldChange, GraphChangeImpact, GraphChangeSummary, GraphChangesByImpact,
LicenseChange, LicenseChanges, LicenseConflict, MatchInfo, MatchMetrics, MatchScoreComponent,
MetadataChange, MetadataChangeKind, MlRegression, QualityDelta, SlaStatus, VexCoverageSummary,
VexStatusChange, VulnerabilityChanges, VulnerabilityDetail,
};
pub use traits::{
ChangeComputer, ComponentChangeSet, ComponentMatches, DependencyChangeSet, LicenseChangeSet,
VulnerabilityChangeSet,
};