#![forbid(unsafe_code)]
#![warn(clippy::all, clippy::pedantic)]
mod accuracy;
#[cfg(feature = "scan")]
mod block;
mod canonical;
mod cluster;
mod config;
mod detector;
mod error;
mod fast_hash;
mod fingerprint;
#[cfg(feature = "scan")]
mod fragment;
mod index;
mod model;
pub mod output;
#[cfg(feature = "scan")]
mod repository;
mod token;
mod verify;
pub use accuracy::{AccuracyCounts, AccuracyGate, AccuracyReport, OracleLocation, OraclePair};
pub use cluster::families_for_pairs;
pub use config::CloneConfig;
pub use detector::CloneDetector;
pub use error::{CloneError, Result};
pub use model::{
CloneEvidence, CloneFamily, CloneKind, CloneLocation, ClonePair, CloneReport, CloneStatistics,
DetectionMode, Language, Similarity, SourceFragment, SourceSpan,
};
#[cfg(feature = "scan")]
pub use repository::{RepositoryCloneDetector, RepositoryOptions};
pub trait SemanticCandidateProvider {
fn candidates(&self, fragment: &SourceFragment, limit: usize) -> Result<Vec<String>>;
}