"""Normalizers for team, stadium, and game data."""

from .canonical_id import (
    generate_game_id,
    generate_team_id,
    generate_team_id_from_abbrev,
    generate_stadium_id,
    parse_game_id,
    normalize_string,
)
from .timezone import (
    TimezoneResult,
    parse_datetime,
    convert_to_utc,
    detect_timezone_from_string,
    detect_timezone_from_location,
    get_stadium_timezone,
    create_timezone_warning,
)
from .fuzzy import (
    MatchCandidate,
    fuzzy_match_team,
    fuzzy_match_stadium,
    exact_match,
    best_match,
    calculate_similarity,
    normalize_for_matching,
)
from .alias_loader import (
    TeamAliasLoader,
    StadiumAliasLoader,
    get_team_alias_loader,
    get_stadium_alias_loader,
    resolve_team_alias,
    resolve_stadium_alias,
)
from .team_resolver import (
    TeamResolver,
    TeamResolveResult,
    get_team_resolver,
    resolve_team,
)
from .stadium_resolver import (
    StadiumResolver,
    StadiumResolveResult,
    get_stadium_resolver,
    resolve_stadium,
)

__all__ = [
    # Canonical ID
    "generate_game_id",
    "generate_team_id",
    "generate_team_id_from_abbrev",
    "generate_stadium_id",
    "parse_game_id",
    "normalize_string",
    # Timezone
    "TimezoneResult",
    "parse_datetime",
    "convert_to_utc",
    "detect_timezone_from_string",
    "detect_timezone_from_location",
    "get_stadium_timezone",
    "create_timezone_warning",
    # Fuzzy matching
    "MatchCandidate",
    "fuzzy_match_team",
    "fuzzy_match_stadium",
    "exact_match",
    "best_match",
    "calculate_similarity",
    "normalize_for_matching",
    # Alias loaders
    "TeamAliasLoader",
    "StadiumAliasLoader",
    "get_team_alias_loader",
    "get_stadium_alias_loader",
    "resolve_team_alias",
    "resolve_stadium_alias",
    # Team resolver
    "TeamResolver",
    "TeamResolveResult",
    "get_team_resolver",
    "resolve_team",
    # Stadium resolver
    "StadiumResolver",
    "StadiumResolveResult",
    "get_stadium_resolver",
    "resolve_stadium",
]
