"""Music DNA Similarity Engine module.

Compares two MusicDNAVector objects and produces a deterministic
similarity result with overall score, distance, per-category scores,
and feature contribution explanation.

This module is a pure mathematical layer — it has no knowledge of
MusicDNA, databases, repositories, filesystems, or machine learning.
"""

from similarity.engine import SimilarityEngine
from similarity.exceptions import (
    SchemaMismatchError,
    SimilarityError,
    UnsupportedMetricError,
    VectorValidationError,
)
from similarity.explanation import SimilarityExplanation
from similarity.metrics import (
    CosineMetric,
    EuclideanMetric,
    ManhattanMetric,
    cosine_similarity,
    euclidean_distance,
    get_metric,
    manhattan_distance,
)
from similarity.result import SimilarityResult

__all__ = [
    "SimilarityEngine",
    "SimilarityResult",
    "SimilarityExplanation",
    "SimilarityError",
    "VectorValidationError",
    "SchemaMismatchError",
    "UnsupportedMetricError",
    "cosine_similarity",
    "euclidean_distance",
    "manhattan_distance",
    "CosineMetric",
    "EuclideanMetric",
    "ManhattanMetric",
    "get_metric",
]
