"""Music DNA Builder and Vector Encoder module.

Transforms extracted analyzer features into a deterministic, immutable
MusicDNA object and encodes it into a fixed-size float32 vector — the
canonical numerical representation used by all future intelligent
subsystems (similarity, embeddings, recommendations).

This module does NOT access audio, perform similarity calculations,
or persist results.
"""

from music_dna.builder import MusicDNABuilder
from music_dna.encoder import MusicDNAEncoder
from music_dna.exceptions import (
    DuplicateFeatureError,
    InvalidValueError,
    MissingFeatureError,
    MusicDNAError,
    NormalizationError,
    UnknownFeatureError,
)
from music_dna.layout import MusicDNALayout
from music_dna.music_dna import MusicDNA, MusicDNAMetadata
from music_dna.normalizer import Normalizer
from music_dna.vector import MusicDNAVector, MusicDNAVectorMetadata

__all__ = [
    "MusicDNA",
    "MusicDNABuilder",
    "MusicDNAMetadata",
    "MusicDNAEncoder",
    "MusicDNALayout",
    "MusicDNAVector",
    "MusicDNAVectorMetadata",
    "Normalizer",
    "MusicDNAError",
    "MissingFeatureError",
    "UnknownFeatureError",
    "DuplicateFeatureError",
    "InvalidValueError",
    "NormalizationError",
]
