from pydantic import BaseModel, ConfigDict, Field

from olmoearth_shared.models.datasets.data_provider_item import DataProviderItem
from olmoearth_shared.models.datasets.data_provider_name import DataProviderName
from olmoearth_shared.models.datasets.item_properties import ItemProperties


class Item(BaseModel):
    """A processed scene. Contains shared properties and can be available from multiple data providers."""

    model_config = ConfigDict(extra="forbid")

    id: str = Field(description="Unique identifier for this item")
    properties: ItemProperties = Field(description="Item properties")
    data_providers: dict[DataProviderName, DataProviderItem] = Field(description="Available data providers for this item")
