"""Read-only metadata port for configured source regions."""

from __future__ import annotations

from dataclasses import dataclass
from typing import Iterable, Protocol, runtime_checkable


@dataclass(frozen=True, slots=True)
class SourceRegionMetadata:
    """Static metadata for a future configured Geofabrik region."""

    region_id: str
    display_name: str
    extract_name: str


@runtime_checkable
class SourceCatalog(Protocol):
    """Lookup contract for configured source-region metadata only."""

    def get_region_metadata(self, region_id: str) -> SourceRegionMetadata | None:
        """Return configured metadata for one region, if present."""

    def iter_configured_regions(self) -> Iterable[SourceRegionMetadata]:
        """Iterate configured region metadata without network access."""
